【发布时间】:2019-01-17 07:59:56
【问题描述】:
我正在调试一个介于 1-100 之间的“猜数字”程序。第一个用户创建一个 secretNumber,第二个用户猜测这个数字。
我正在尝试检查第二个用户输入是否是 1-100 之间的数字,但由于某种原因它仍然接受负数,我不知道为什么。
请注意,我对编码很陌生,所以我还不熟悉行话。在我的课上,我们刚刚学习了 while 循环和关系运算符以及 if/else 语句,所以我只能使用这些。
(secretNumber == 0) 是为了确保int.TryParse() 在用户输入字母而不是数字时不会返回 0。
if 语句检查:
( secretNumber >= 1 && secretNumber <= 100 )
还有
( secretNumber >= 1 || secretNumber <= 100 )
这是我的代码:
//Create a number variable to hold the whole number
int secretNumber;
//Validate that the number is a whole number AND between 1 and 100
if ( int.TryParse(secretNumberString, out secretNumber)
|| ( secretNumber >= 1 && secretNumber <= 100 )
|| secretNumber == 0 )
{
// Tell the user the problem
Console.WriteLine("Sorry, please only type in whole numbers and it must be between 1 and 100!");
// Re-ask the question
Console.WriteLine("What is your secret number?");
// Re-catch the response in the same variable
secretNumberString = Console.ReadLine();
// Re-assign the new input
int.TryParse(secretNumberString, out secretNumber);
}
如果用户输入负值,则 if 语句应该运行。
如果用户输入的值大于 100,它就会运行,但如果值低于 100,它就不会运行。否则,如果数字在 1-100 之间正确,它就不应该运行。
【问题讨论】:
-
另外,我已经尝试给我的老师发消息寻求帮助,但我猜他们已经睡着了。我很沮丧,因为我觉得这个问题的答案真的很简单,在搞砸了一个小时后我仍然弄错了......
-
if (int.TryParse(secretNumberString, out secretNumber) ||表示如果用户输入了一个实际数字 OR ... 你想要 AND -
有什么理由不使用 NumericUpDown 来避免整个问题?
-
@NoneoftheAbove 我只能使用我在课堂上学到的东西,而且我们只学习了布尔值、关系运算符和 if 语句。 ^^" 我还不知道那是什么。
标签: c#