gpt4 book ai didi

c++ - 我怎样才能让它重复而不陷入无效输入?

转载 作者:行者123 更新时间:2023-11-28 06:41:20 25 4
gpt4 key购买 nike

快速提问。

我如何让这段代码自行循环,以便它不断提出问题,但在给出非数字输入时仍然允许不同的操作?

int main()
{
int temp = 0;
while (temp =1, 10)
{
int amend_numb = -1;
cout << "\nWhich amendment? ";
cin >> amend_numb;
if (amend_numb == 1)
{
cout << "a.\n";
}
if (amend_numb == 2)
{
cout << "b.\n";
}

我试图将它放入这个 while 语句中,但是如果我在 cin 中输入除整数以外的任何内容,那么它会执行一个不断重复 cout 语句的无限循环。有什么办法可以解决这个问题?

最佳答案

while (temp =1, 10)

虽然表达式在句法上是正确的,但它可能不会按照您的想法执行:
1. 将 temp 赋值给 1。
2.忽略赋值返回的值(因为逗号运算符)
3. 剩余表达式为 10,非零,因此循环继续。

一般的经验法则是对已知数量的迭代使用 for 循环:

for (temp = 1;   // assignment
temp < 10; // continuation expression
++temp) // iterator incrementing
{
// loop content
}

与用户交互时,您希望循环重复直到满足退出条件。

  unsigned int temp = 0;
while (temp != 0)
{
cout << "Enter amendment number, 0 to quit: ";
cin >> temp;
if (temp > 0)
{
switch (temp)
{
//...
}
}
}

有些人喜欢带有 break 语句的forever 循环:

  unsigned int temp = 0;
while (true)
{
cout << "Enter amendment number, 0 to quit: ";
cin >> temp;
if (temp == 0)
{
break; // terminate loop
}
switch(temp)
{
//...
}
}

关于c++ - 我怎样才能让它重复而不陷入无效输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25897017/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com