我正在尝试用c ++制作自动售货机。我只是想为它添加一些验证,所以它不会破坏。我首先要求用户输入他们选择的前两个字母。我知道我不能阻止他们输入超过一个字符。我创建了一个do while循环来确保第一个char和第二个字符不比maxChar大。我没有语法错误,但我没有得到正确的答案。我知道char不同于int,但我如何将char转换为int?任何帮助将不胜感激
#include <cstdlib>
#include <iostream>
#include <iomanip>
#include <string>
#include <sstream>
#include <set>
#include <cctype>
#include <locale>
const int maxChr = 3;
char chrOne,chrTwo;
do
{
cin >>chrOne>>chrTwo;
if(chrOne + chrTwo > maxChr)
{
cout <<"you have too many characters"
"please try again" << endl;
}
while (chrOne + chrTwo > maxChr);
}
答案 0 :(得分:1)
do...while
循环如下:
do
{
} while ();
(你的时间在结尾括号之前)
如果您只想获得两个字符(假设您只需要0-9,因为您要求提供相关数字):
#include <iostream>
int main()
{
char in1,in2;
do {
std::cout << "please make a selection"
cin.get(in1);
cin.get(in2);
in1 -= '0'; //converts a char to the digit that represents it - needs checking though
in2 -= '0';
//at this point, you have grabbed both the inputs from the cmdline.
//you'll need to ensure that these are valid.
} while (!(in1 >= 0 && in1 <= 9 && in2 >= 0 && in2 <= 9)); //change as needed e.g. if you have a 5*6 machine, reduce the '9's to 5 and 6
//you now have your input.
}
答案 1 :(得分:0)
行if(chrOne + chrTwo > maxChr)
没有检查用户是否输入了两个以上的字符,所以根据我的理解,你说这是错误的。如果你只想要一个字符,你可以在字符串中输入用户并对其进行检查,以查看用户输入的字符数。
答案 2 :(得分:0)
您正在使用
cin >>chrOne>>chrTwo;
让我们说用户已输入两个以上的字符,即荒谬的问题。
即便如此,只有前两个字符会存储在您的变量上,即
chrOne='a'
chrTwo='b'
请澄清你打算做什么......
答案 3 :(得分:0)
好的,我明白你要做的是什么,但你这样做的方式很糟糕......你总是只读前两个字符!
此行chrOne + chrTwo
不是您期望的那样。
ASCII中的A
与65相同,B
= 66,依此类推。所以实际上你总结了两个数字。 65 + 66 = 131,大于3;
我不知道StackOverflow上的格式是否错误,while(...)
应该在}
之后。这段代码不应该编译。