我是c ++编程的初学者,我应该创建一个程序,其中不满足某些条件的答案会产生某些语句。 我还添加了
cin.ignore(INT_MAX, '\n');
为了使用
getline
和 cin
在一起。但是,我想我可能误解了它们如何工作的性质而且我使用了
cin.ignore(INT_MAX, '\n')
在使用第一个getline函数之前,它导致我的程序暂停。我认为只有在我之前使用cin,并且当我想使用getline函数以防止getline函数占用空白空间时我才应该使用它?
一开始,它导致我的错误,我不确定我何时使用它。 我认为这部分可能是错误......但我并不完全了解||和&&运营商工作
else if (donorGender != "Male" || "Female" || "Trans Male" || "Trans Female" || "Queer" || "Different")
这就是我这样做的方式吗?
else if (donorGender != "Male" && donorGender != "Female" && donorGender != "Trans Male" && donorGender != "Trans Female" && donorGender != "Queer" && donorGender != "Different")
或者这就是我这样做的方式
请帮忙......
答案 0 :(得分:2)
您的代码表示它会测试donorName
其他donorGender
,依此类推。你需要检查所有条件。和donorGender
检查if语句格式是否正确。 如果用户输入的名称和性别均无效,该怎么办?
我认为你不应该检查其他条件,如果错误的话。如果你想告诉所有错误的东西,那么方法是不同的。但在你的情况下,代码可以帮助。尝试一下!
嵌套条件语句
if(donorName != "")
{
if(donorGender == "Male"
or donorGender == "Female"
or donorGender == "Trans Male"
or donorGender == "Trans Female"
or donorGender == "Queer"
or donorGender =="Different")
{
if(donorAge >= 0) {
if(donorWeight >= 0) {
if (donorHeight >= 0)
{
cout << "--- You must enter a valid height." << endl;
return (-1);
}
else {
}
}
else {
cout << "--- You must enter a valid weight." << endl;
return (-1);
}
}
else {
cout << "--- You must enter a valid age." << endl;
return (-1);
}
}
else {
cout << "--- You must enter a valid gender." << endl;
return(-1);
}
}
else {
cout << " --- You must enter a valid name." << endl;
return (-1);
}
答案 1 :(得分:2)
声明
cin.ignore(INT_MAX, '\n');
在您开始暂停您的计划,直到您按下Enter
键。
来自this:
的std :: istream的::忽略
istream的&安培; ignore(streamsize n = 1,int delim = EOF);
提取并放弃字符
从输入序列中提取字符并丢弃它们,直到提取了n个字符,或者一个比较等于delim。
通常情况下,cin.ignore(INT_MAX, '\n')
与getline
一起使用,如果您在调用cin
之前使用getline
有其他输入语句,那么当用户输入cin
的内容时,他们点击Enter
键,\n
(换行符)字符进入输入缓冲区。然后,如果您的程序调用{{1}},它将获取换行符而不是您想要的字符串。在您的程序中,您正在使用getline
作为用户的第一个输入,因此您不需要它。您可以安全地从程序中删除getline
语句。
这句话错了:
cin.ignore
您需要将else if (donorGender != "Male" || "Female" || "Trans Male" || "Trans Female" || "Queer" || "Different")
与所有可能的有效值进行比较,而不仅仅是一个有效值。即使您将donorGender
与所有有效值进行比较,这也无效,因为条件中的donorGender !=
运算符将始终评估为||
,因为true
的有效值为{{} 1}}其余所有有效值。将其更改为:
donorGender
通过这些更改,您的程序应该按预期工作。 另外,我建议你为用户提供的所有输入添加一些输入验证。