您好我正在尝试执行将二进制数转换为小数的编程赋值。问题表明我必须将用户输入作为一个刺痛,并且如果用户输入中除了1或0之外还有任何东西,它应该给出错误消息然后提示他们给出新的输入。我已经尝试了一段时间,我似乎无法让任何人帮助我吗? 到目前为止,这是我最好的尝试,它将字符串的每个输入运行到一个if语句,但它似乎只关心最后一个数字,我想不出一个方法,所以如果有一个错误,它将保持循环陈述是真实的继续前进。
#include <iostream>
#include <string>
using namespace std;
string a;
int input();
int main()
{
input();
int stop;
cin >> stop;
return 0;
}
int input()
{
int x, count, repeat = 0;
while (repeat == 0)
{
cout << "Enter a string representing a binary number => ";
cin >> a;
count = a.length();
for (x = 0; x < count; x++)
{
if (a[x] >= '0' &&a[x] <= '1')
{
repeat = 1;
}
else
repeat = 0;
}
}
return 0;
}
return 0;
}
答案 0 :(得分:2)
更改你的for循环:
count = a.length();
repeat = 1;
for (x = 0; x < count; x++)
{
if (a[x] != '0' && a[x] != '1')
{
repeat = 0;
break;
}
}
这个想法是repeat
最初被假定为1(所以你假设你的输入是有效的)。稍后,如果您的任何输入字符不是0或1,则将repeat
设置为0并退出循环(不需要继续查找其他字符)