因此,我正在为C ++类创建程序,并且创建了while循环来停止无效输入。 每次我使用无效输入进行测试时,都会进入无限循环。我是编码的新手,所以我真的不知道如何解决它。
cout << "Enter weight in ounces (Max: 1800)" << endl;
cin >> pkgweight;
while (pkgweight > 0 || pkgweight < 1800)
{
cout << "Weight out of range. Program terminating.\n" << endl;
}
cout << "Enter miles shipping (Max: 3500)" << endl;
cin >> distance;
while (distance > 0 || distance < 3500)
{
cout << "Shipping distance out of range." << endl;
cout << "Program terminating.\n" << endl;
}
答案 0 :(得分:2)
如果该循环内没有任何变化,则退出条件将永远不会触发。
也许你是说:
int pkgweight = 0;
cout << "Enter weight in ounces (Max: 1800)" << endl;
cin >> pkgweight;
if (pkgweight < 0 || pkgweight > 1800)
{
cout << "Weight out of range. Program terminating.\n" << endl;
}
在需要循环直到满足某些条件的情况下,您需要使用while
。 if
就像是非循环的while
。
虽然学习非常好,而且可以理解自己会犯错误,但滑倒一些基本知识通常是您没有很好的工作依据的迹象。让自己扎实C++ reference book,如果您对某些事情感到困惑,请经常参考。这是正确学习的必不可少的,而不仅仅是在这里和那里捡拾点点滴滴,并试图弥补差距。 C ++的许多部分毫无意义,它们是数十年前设计决策的产物,也是您从未听说过的其他编程语言的影响。您需要适当的基础。
答案 1 :(得分:1)
如果您希望用户能够修正输入错误的输入,则需要:
cout << "Enter weight in ounces (Max: 1800)" << endl;
cin >> pkgweight;
while (pkgweight > 0 || pkgweight < 1800)
{
cout << "Weight out of range. Program terminating.\n" << endl;
cout << "Enter weight in ounces (Max: 1800)" << endl;
cin >> pkgweight;
}
这样,如果用户输入的数字超出有效范围,则会提示他们输入新的数字。如果新值在该范围内,则循环将退出。
您当前程序的问题是,while
循环将在“条件”为“ true
”的情况下执行。在当前程序中,一旦设置了pkgweight
,它就保持不变。这意味着,如果由于要检查的条件是true
而进入循环,则该条件将永远不会改变(允许循环退出),并且错误消息将被无限期打印。
答案 2 :(得分:0)
查看您的代码,好像您想在输入错误的情况下终止程序。您可以考虑终止该功能。全部在main()
中吗?如果它不在外部函数中,则只需执行return -1
。我知道这可能是不好的编程习惯,但是,嘿,它专门为此工作!
顺便说一句,您的条件语句为> 0
和< 1800
,这意味着如果 变量distance和pkgweight在指定范围内,则程序将终止。
这是我的工作片段,没有这些错误,已在onlineGDB上进行了测试。
#include <iostream>
using namespace std;
int main ()
{
int pkgweight, distance;
cout << "Enter weight in ounces (Max: 1800)" << endl;
cin >> pkgweight;
while (pkgweight < 0 || pkgweight > 1800)
{
cout << "Weight out of range. Program terminating.\n" << endl;
return -1;
}
cout << "Enter miles shipping (Max: 3500)" << endl;
cin >> distance;
while (distance < 0 || distance > 3500)
{
cout << "Shipping distance out of range." << endl;
cout << "Program terminating.\n" << endl;
return -1;
}
return 0;
}
当然,除了切换小于和大于以外,您始终可以将条件包装在not运算符中。