我的代码的基本思想是让用户输入0-9的拼写,即零,一个等或实际数字,并分别输出数字/拼写。
我设法使用while(cin >> number)
(数字是字符串变量)使用while循环执行此操作,然后使用if语句选择适当的输出选项,即“零” - > 0和“0” - >零。
起初虽然我尝试按以下方式进行,但
while (cin >> number || cin >> n)
{
if (n == 0)
cout << digits[0] << endl;
.
.
.
else if (n == 9)
cout << digits[9] << endl;
if (number == digits[0])
cout << 0 << endl;
.
.
.
else if (number == digits[9])
cout << 9 << endl;
}
digits
只是一个存储字符串“0”,“1”等的矢量类。
这不起作用,当输入一个字符串时输出是正确的但是当输入一个整数时输出总是“零”。我想知道为什么这不起作用?我认为它与while循环条件有关。计算机无法识别是否输入了字符串/整数并执行相应的操作?
答案 0 :(得分:3)
问题是cin >> number
总是会成功,因为number
是string
(只要你没有点击EOF或其他一些失败条件);如果用户输入数字,number
将把数字保存为字符串。所以cin >> n
不会发生。
您应该将number
与字符串"0"
... "9"
进行比较(除了测试数字名称之外)。您还应该使用循环而不是if/else if
链。
答案 1 :(得分:0)
我认为您不了解||
运算符的用法。 while (cin >> number || cin >> n)
表示执行cin >> number
,如果该表达式评估false
,则执行cin >> n
,如果其中任何一个评估true
,则执行括号内的操作。< / p>
正如nneonneo所说,cin >> number
将(几乎)总是评估true
,所以cin >> n
永远不会发生,但这实际上是你问题中最少的。
如果我建议的话,我认为你现在应该完全摆脱while
循环,只关注一次。你需要的是cin >> number
,然后对天气进行测试,或者number
是"0"
,"1"
,... {{ 1}}号码,或"9"
,"zero"
,... "one"
号码。然后你可以决定如何将一个转换为另一个。