如果用户输入错误则循环程序
Loop program if user enters wrong input
我刚开始学习 C#,while 循环让我很困惑。与 Java 不同,如果用户输入了无效输入,我可以使用 while 循环来循环程序,它在 C# 中的行为方式不同。
using System;
namespace first {
class Program {
static void Main(string[] args) {
Console.WriteLine("Hi! What is your name");
string userName = Console.ReadLine();
Console.WriteLine("oh! you are:" + userName);
Console.WriteLine("let play a game");
string answer="Y";
while (answer == "Y") {
Random random = new Random();
int correntNumber = random.Next(1, 2);
int guess = 0;
Console.WriteLine("Guess a number");
while (guess != correntNumber) {
string userGuess = Console.ReadLine();
//validate input method 1
try {
guess = int.Parse(userGuess);
} catch (Exception e) {
Console.WriteLine("Invalid inout", e);
}
//validate input method 2
//if(!int.TryParse(userGuess, out guess)) {
// Console.WriteLine("invalid input");
//}
if (guess != correntNumber) {
Console.WriteLine("try again!");
}
}
Console.WriteLine("Yes! corrector");
Console.WriteLine("Play again?");
//string answer;
answer = Console.ReadLine().ToUpper();
if(answer == "Y") {
continue;
} else if (answer == "N") {
Console.WriteLine("bye");
return;
} else if (answer != "Y" || answer != "N") {
Console.WriteLine("y or n");
answer = Console.ReadLine().ToUpper();
continue;
}
}
}
}
}
当我输入 y 或 n 以外的值时,会出现消息,Console.WriteLine("Y or n only");,但游戏会重新启动,但它不应该重新启动。
很抱歉,这是一个简单而愚蠢的问题,但我无法指出我哪里出错了。
问题在于,在向用户打印“y or n only”消息后,您接受了输入,但实际上并没有对其进行任何操作
因此无论输入如何,循环都会重新启动,要解决此问题,您可以用此代码替换最后一个 if 部分
while(answer != 'Y' && answer != 'N'){
Console.WriteLine("y or n only");
answer = Convert.ToChar(Console.ReadLine().ToUpper());
}
if(answer == 'Y')
{
continue;
}
else if(answer == 'N')
{
Console.WriteLine("goodbye");
return;
}
所以在你读完他的第一个输入答案重复或否后,你检查它是否是一个有效的输入,如果不是你继续问他“y or n only”直到他输入“Y”或“N”,然后你处理这个答案,看它在 if 部分是“Y”还是“N”
我刚开始学习 C#,while 循环让我很困惑。与 Java 不同,如果用户输入了无效输入,我可以使用 while 循环来循环程序,它在 C# 中的行为方式不同。
using System;
namespace first {
class Program {
static void Main(string[] args) {
Console.WriteLine("Hi! What is your name");
string userName = Console.ReadLine();
Console.WriteLine("oh! you are:" + userName);
Console.WriteLine("let play a game");
string answer="Y";
while (answer == "Y") {
Random random = new Random();
int correntNumber = random.Next(1, 2);
int guess = 0;
Console.WriteLine("Guess a number");
while (guess != correntNumber) {
string userGuess = Console.ReadLine();
//validate input method 1
try {
guess = int.Parse(userGuess);
} catch (Exception e) {
Console.WriteLine("Invalid inout", e);
}
//validate input method 2
//if(!int.TryParse(userGuess, out guess)) {
// Console.WriteLine("invalid input");
//}
if (guess != correntNumber) {
Console.WriteLine("try again!");
}
}
Console.WriteLine("Yes! corrector");
Console.WriteLine("Play again?");
//string answer;
answer = Console.ReadLine().ToUpper();
if(answer == "Y") {
continue;
} else if (answer == "N") {
Console.WriteLine("bye");
return;
} else if (answer != "Y" || answer != "N") {
Console.WriteLine("y or n");
answer = Console.ReadLine().ToUpper();
continue;
}
}
}
}
}
当我输入 y 或 n 以外的值时,会出现消息,Console.WriteLine("Y or n only");,但游戏会重新启动,但它不应该重新启动。
很抱歉,这是一个简单而愚蠢的问题,但我无法指出我哪里出错了。
问题在于,在向用户打印“y or n only”消息后,您接受了输入,但实际上并没有对其进行任何操作 因此无论输入如何,循环都会重新启动,要解决此问题,您可以用此代码替换最后一个 if 部分
while(answer != 'Y' && answer != 'N'){
Console.WriteLine("y or n only");
answer = Convert.ToChar(Console.ReadLine().ToUpper());
}
if(answer == 'Y')
{
continue;
}
else if(answer == 'N')
{
Console.WriteLine("goodbye");
return;
}
所以在你读完他的第一个输入答案重复或否后,你检查它是否是一个有效的输入,如果不是你继续问他“y or n only”直到他输入“Y”或“N”,然后你处理这个答案,看它在 if 部分是“Y”还是“N”