【发布时间】:2018-08-16 10:36:54
【问题描述】:
您好,我正在用 C# 编写一个程序,它接受一个数字并要求用户输入一个数字,一旦用户输入数字,程序就会检查它是否与原始数字匹配,如果不匹配,它应该告诉用户他们的答案小于或大于,但是我的 if 语句不起作用。
//Boolean if user passes
Boolean Userpassed;
// Declares Answer Variable
int answer = 6;
// Asks user for a number
Console.WriteLine("Enter a number between 1 and 10");
// Displays Message
Console.ReadLine();
// Takes User Input as String
string useranswer = Console.ReadLine();
// Declares integer for actual integer
int userinput;
// User string parsed to Int
userinput = Convert.ToInt32(Console.Read());
// Displays Message
Console.ReadLine();
// Checks if input is equal to answer
if (userinput == answer)
{
// User passes
Console.WriteLine("Congratulations, you have passed");
}
// Checks if input is greater than answer
else if (userinput > answer)
{
// User Fails
Console.WriteLine("The actual answer is less than what you entered");
}
// Checks if input is less than answer
else if (userinput < answer)
{
// User Fails
Console.WriteLine("The actual answer is greater than what you entered");
}
// Displays Message
Console.ReadLine();
第一个 if 语句不起作用,因为当我输入 6 时,它只是传递给 else 循环。然后,如果我输入不同的数字,它不会超过第二个 else 循环。我该如何解决这个问题?
【问题讨论】:
-
为什么不将
useranswer转换为userinput?Console.Read也不会返回您认为的结果。而且你有很多ReadLines。用户必须按 Enter 3 次才能到达if。 -
@juharr 当我转换 useranswer 时它说我无法将字符串转换为整数
-
@ProTalz
int user input = Int.Parse(Console.ReadLine());TryParse更好,但评论太长了 -
userinput = Convert.ToInt32(useranswer)不起作用?你得到什么错误?请注意,如果您只是使用Console.Read并按 6 键它不会返回 6,它会返回 54 字符 6 的 Ascii 值。 -
您似乎对
Console.Read和Console.ReadLine的含义感到困惑。Console.Read从控制台读取并返回一个字符。Console.ReadLine读取一行字符(直到用户按下回车键)并将它们作为字符串返回。只需使用类似这样的东西:var userinput = Convert.ToInt32(Console.ReadLine())从标准输入中读取一个整数。
标签: c# if-statement random