如何结束整个节目 我有一个非常简单的C++控制台程序。它工作得很好,但我有一些问题。 我有两个功能。第一个名为“输入”的函数要求用户输入6到10的数字。我在该函数中声明: if ((a[i][j] < 6) || (a[i][j] > 10)) { cout<<"Invalid input!"; return 0; }
我的问题是。当我输入的数字不是6-10时,我的程序仍然执行“输出”功能,所以它会打印一些随机数。当输入规则被破坏时,我如何在准确的时间内破坏整个程序?没有任何随机输出和东西,只是打印“无效输出”,然后从一开始就启动程序如何结束整个节目 我有一个非常简单的C++控制台程序。它工作得很好,但我有一些问题。 我有两个功能。第一个名为“输入”的函数要求用户输入6到10的数字。我在该函数中声明: if ((a[i][j] < 6) || (a[i][j] > 10)) { cout<<"Invalid input!"; return 0; },c++,C++,我的问题是。当我输入的数字不是6-10时,我的程序仍然执行“输出”功能,所以它会打印一些随机数。当输入规则被破坏时,我如何在准确的时间内破坏整个程序?没有任何随机输出和东西,只是打印“无效输出”,然后从一开始就启动程序 if(input(matrix,number) != 0) output(matrix,number); // You don't {} for a single instruction 这会解决你的问题 这将解决您的问题。在调用output()之前,您可以检查input
if(input(matrix,number) != 0) output(matrix,number);
// You don't {} for a single instruction
这会解决你的问题
这将解决您的问题。在调用
output()
之前,您可以检查input()的返回值。
您可以使用exit()
函数终止程序您可以在调用output()
之前检查input()的返回值。
您可以使用exit()
函数终止程序指示错误的常用方法是引发异常
int main() {
...
try {
input(matrix, number);
output(matrix, number);
} catch(std::exception& e) {
std::cout << "Error: " << e.what();
}
}
intmain(){
...
试一试{
输入(矩阵、数字);
输出(矩阵、数字);
}捕获(标准::异常&e){
std::cout指示错误的常用方法是抛出异常
int main() {
...
try {
input(matrix, number);
output(matrix, number);
} catch(std::exception& e) {
std::cout << "Error: " << e.what();
}
}
intmain(){
...
试一试{
输入(矩阵、数字);
输出(矩阵、数字);
}捕获(标准::异常&e){
std::cout如果输入函数在无效输入时返回0,在成功时返回另一个值,则可以运行循环,直到输入有效
...
while(input(matrix,number) == 0);
...
如果输入函数在无效输入时返回0,在成功时返回另一个值,则可以运行循环,直到输入有效
...
while(input(matrix,number) == 0);
...
有很多解决方案。一种是声明input
函数以返回整数。成功时input
可以返回0
。失败时(输入超出范围6-10)input
返回负数(-1
为简单起见)。在主函数中,使用while循环继续调用input
,直到它返回0表示成功。每次input
失败时,您都可以打印一条消息,告诉客户端进入并重试。如果要在第一次输入失败后立即退出,可以调用exit(1)
在main
中有很多解决方案。一种是声明input
函数以返回整数。成功input
时可以返回0
。失败时(输入超出范围6-10)input
返回负数(-1
为简单起见)。在主函数中,使用while循环继续调用input
,直到它返回0表示成功。每次input
失败时,您都可以打印一条消息,告诉客户端进入并重试。如果要在第一次输入失败后立即退出,可以调用exit(1)
在main中
惯用代码如下:
while(input (matrix, number)) //idiomatic loop
{
output (matrix, nubmer);
}
输入无效时,input()
函数应返回false
或0
,输入有效时应返回true
或非零
上面的循环与我们编写的std::istream
习惯用法的形式相同:
std::string word;
while( std::cin >> word )
{
//..
}
//Or
ifstream file;
//...
while( file >> word )
{
//..
}
//Or
while( std::getline(file, word))
{
//..
}
我刚才在这里解释了这个成语的用法:
惯用代码如下:
while(input (matrix, number)) //idiomatic loop
{
output (matrix, nubmer);
}
输入无效时,input()
函数应返回false
或0
,输入有效时应返回true
或非零
上面的循环与我们编写的std::istream
习惯用法的形式相同:
std::string word;
while( std::cin >> word )
{
//..
}
//Or
ifstream file;
//...
while( file >> word )
{
//..
}
//Or
while( std::getline(file, word))
{
//..
}
我刚才在这里解释了这个成语的用法:
发布完整的代码。它是否首先打印“无效输入”?请给我几秒钟时间发布整个代码,因为它是用我的母语编写的,所以你不会理解。如果你的输入函数在无效输入时返回0,成功时是否会返回另一个值?你可以在循环中检查输入函数的返回值。发布完整的代码。它是否RIET“无效输入”放在第一位?给我几秒钟后,把它全部用我的母语,这样你就不会理解。如果你的输入函数在无效输入上返回0,它是否返回另一个成功值?你可以在循环中检查输入函数的返回值。你显然比我知道更多关于C++的内容。但是我从不使用EX。检查用户输入是否有效的异常。我只在异常情况下使用异常,这种情况永远不会发生。用户可能会做出无意义的输入。@Lucas:程序终止是一种异常情况。是吗?大多数程序都必须在某个点终止。在这种情况下,我会让程序终止只是我的正常情况的一部分l控制流。但我猜这是有争议的。显然,你比我更了解C++。但是我从不使用异常来检查用户输入是否有效。我只使用异常情况下的异常,这是不应该发生的。预期用户会做出无意义的输入。@卢卡斯:程序终止是一个异常的情况。是不是?grams必须在某个点终止。在这种情况下,我会使程序终止只是我正常控制流的一部分。但我想这是有争议的。!=0
可以省略。!=0
可以省略。