标题可能听起来令人困惑所以首先我会告诉你我的代码,我制作了这个简单的程序来获取两个输入值并将它们相乘,而另一件事,但这并不重要,它的工作正常:
#include <iostream>
using namespace std;
main()
{
int a,b,c,d,e;
char j = 4;
cout << "Welcome to Momentum Calculator\n\n";
cout << "------------------------------\n";
cout << "Please Enter Mass in KG (if the mass in in grams, put \"9999\" and hit enter): \n\n";
cin >> a;
if (a==9999) {
cout << "\nPlease Enter Mass in grams: \n\n";
cin >> d;
}
else {
d = 0;
}
cout << "\nPlease Enter Velocity \n\n";
cin >> e;
if (d == 0)
{
c = (a*e);
}
else {
c = (e*d)/100;
}
cout << "\nMomentum = " << c;
cin.get();
cin.ignore();
while (j == 4)
{
cout << "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n";
main();
}
}
现在你可以看到,我的变量是一个int(整数),我的问题是如果我输入一个英文字母(az)或任何不是数字的东西将导致它以无限速度无限次重复我的程序。我想要一个字符串/ char来查看我的var“a”是一个字母还是其他什么,但不知道如何。我可以做到,但是,我希望用户只在“a”中输入一次,然后我再次进入。请帮助:)
答案 0 :(得分:1)
在ctype库中有一个名为isalpha的函数,检查你的变量是否是一个字母,这样你就可以使用isalpha函数。
答案 1 :(得分:1)
来自标准库的isdigit或isalpha会帮助你吗?
P.S。 1KG包含1000克,所以你应该除以1000,而不是100;
更新: 似乎我理解你的问题...... 你需要cin.clear();在cin.get()和cin.ignore()之前。 否则这些调用将不会执行任何操作,因为cin处于错误状态。
答案 2 :(得分:0)
我认为你可以得到一个字符串,并查看它是否包含英文字母,如果它包含,再次询问输入(你可以在while循环中执行)。输入正确的输入后,解析它并找到它的编号。