gpt4 book ai didi

c++ - "Not all controlpaths return a value"/"control may reach end of non void function"使用 while 循环验证时?

转载 作者:行者123 更新时间:2023-11-28 04:18:32 29 4
gpt4 key购买 nike

我正在尝试验证不是整数 1、2 或 3 的输入。我正在使用 do/while 循环,但它不起作用,只是不断重复。怎么了?

#include <iostream>
#include <string>

using namespace std;

string decisionThing(int);


int main()
{
int response;
cout << "Enter the section you are in in\n";
cin >> response;

do
{
cout << "Are you in section 1, 2, or 3?";
cin >> response;


} while (response != 1 || response != 2 || response != 3);

cout << decisionThing(response) << "\n";

}

string decisionThing(int response)
{
string date;

switch (response)
{
case 1:
date = "The test will be held on the 5th.\n";
return date;
break;
case 2:
date = "The test will be held on the 6th.\n";
return date;
break;
case 3:
date = "The test will be held on the 9th.\n";
return date;
break;
}
}


它应该执行 do/while 循环为真(用户输入一些输入,如 155“zebras”)。

最佳答案

问题是您的 while 循环总是 返回 true。当您应该使用 && 时,您却在使用 ||。任何输入要么是not 1,要么是not 2,要么是not 3

将您的代码更改为此,它将解决问题。

do {
cout << "Are you in section 1, 2, or 3?";
cin >> response;
} while (response != 1 && response != 2 && response != 3);

至于你得到的错误,可能是你的 decisionThing 在现实生活中不会得到一个不是 1 的数字, 23 但编译器不知道。如果该方法得到的数字不满足这两种情况,应该怎么办?它没有定义。因此,我们有一条路径可以让此代码在指定返回字符串的函数中不返回任何内容。您可以返回空字符串或抛出异常或处理 default 情况,如下所示:

string decisionThing(int response)
{
string date;

switch (response)
{
case 1:
date = "The test will be held on the 5th.\n";
return date;
case 2:
date = "The test will be held on the 6th.\n";
return date;
case 3:
date = "The test will be held on the 9th.\n";
return date;
default:
date = "Wow, this is really unexpected, I guess nothing?\n";
return date;
}
}

顺便说一句,当您有return 时,您不需要break。该函数将立即返回,因此之后的任何操作都不会被执行。

关于c++ - "Not all controlpaths return a value"/"control may reach end of non void function"使用 while 循环验证时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56013684/

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