【发布时间】:2014-10-27 17:15:58
【问题描述】:
std::cout << "How many turns do you want to do?" << std::endl << std::endl << std::endl;
std::string turnsDefined;
std::cin >> turnsDefined;
//std::cin.sync();
bool hasPassed = false;
int objectSizeIniti = 0;
int objectSizePost = 0;
for(char c : turnsDefined){
objectSizeIniti++;
}
bool boolForCharIsDigi[objectSizeIniti];
for(bool _b : boolForCharIsDigi){
_b = false;
}
while(hasPassed != true){
for(char c : turnsDefined){
if(isdigit(c) == 0){
boolForCharIsDigi[objectSizePost] = false;
}else if (isdigit(c) != 0){
boolForCharIsDigi[objectSizePost] = true;
}
bool allTrue = false;
for(int i = 0; i < sizeof(boolForCharIsDigi)/sizeof(boolForCharIsDigi[0]); i++){
if(boolForCharIsDigi[i] == false){
allTrue = false;
std::cin >> turnsDefined;
std::cout << "You may only use numbers to define the amount of turns. No decimals either." << std::endl << std::endl;
break;
}else if(boolForCharIsDigi[i] == true){
allTrue = true;
hasPassed = true
}
}
}
objectSizePost++;
}
我试图理解为什么上面的代码表现得如此奇怪。
我想做什么:
我正在获取输入并测试它是否仅包含数字。如果是,它只是传递循环(将 w-loop 正在检查的变量设置为 true)。如果输入确实包含数字以外的字符,它会请求另一个输入并警告用户。
发生了什么:它随机需要一些输入来实际接受“只有数字”的输入。总的来说,整个程序只是随机运行。
【问题讨论】:
-
您是否尝试调试它以检查问题?如果您尝试逐步调试,您可以轻松找到问题的原因。
-
while(hasPassed != true)让我畏缩。 -
@Jepessen 这就是我所做的。但没有帮助,因为我根本无法弄清楚逻辑。它的迭代真的很奇怪......
-
@FredLarson 我会改变它。但请不要仅仅为了这么说而发表评论。