我试图添加代码,所以如果用户输入错误,他们可以返回程序并重新输入输入,但我不确定我找到和使用的代码是否正确。这是我的职责:
/********************************************/
// Name: inspools /
// Description: Ask for and get number of /
// spools /
// Parameters: N/A /
// Reture Value: spoolnum /
/********************************************/
int spoolnum()
{
int spoolnum;
char type;
cout << "Number of spools to be shipped: " << endl;
cin >> spoolnum;
cout << spoolnum << " spool(s) of wire will be shipped" << endl;
cout << "Is this correct? [y/n] ";
cin >> type;
if ('n') << spoolnum;
if ('y') break;
return spoolnum ;
}
答案 0 :(得分:2)
你说你搜索过循环,但我不买。我想你在编程方面很有新意。我会给你答案但不是没有先解释一下。
循环如何工作
来自Wikipedia:
在大多数计算机编程语言中,while循环是一个控制流程 允许代码根据给定重复执行的语句 布尔条件。 while循环可以被认为是重复的if 言。
您的问题
您的问题是,您希望让用户在输入y
之前输入一个选项。为此,您至少需要一个WHILE
循环,或者其他评论者已经说过DO/WHILE
循环。
我从不喜欢DO/WHILE
循环,但其他人更喜欢它。
以下代码可能导致的问题是,您在y
中返回的cin
不仅仅是换行符\n
。你必须处理这个条件。
int spoolnum()
{
int spoolnum = 0;
char type = 'n';
while (type != 'y') {
cout << "Number of spools to be shipped: " << endl;
cin >> spoolnum;
cout << spoolnum << " spool(s) of wire will be shipped" << endl;
cout << "Is this correct? [y/n] ";
cin >> type;
}
return spoolnum;
}
或替代DO/WHILE
:
int spoolnum()
{
int spoolnum = 0;
char type = 'n';
do {
cout << "Number of spools to be shipped: " << endl;
cin >> spoolnum;
cout << spoolnum << " spool(s) of wire will be shipped" << endl;
cout << "Is this correct? [y/n] ";
cin >> type;
} while (type != 'y');
return spoolnum;
}
在上面的代码中,我删除了您的if ('n') << spoolnum;
,因为坦率地说它没有感觉。
我还删除了if ('y') break;
,因为while(...)
循环会在条件满足后中断,即type equal to 'y'
。