如何让这段代码循环询问用户的输入,直到 int.TryParse()
成功了?
//setX
public void setX()
{
//take the input from the user
string temp;
int temp2;
System.Console.WriteLine("Enter a value for X:");
temp = System.Console.ReadLine();
if (int.TryParse(temp, out temp2))
x = temp2;
else
System.Console.WriteLine("You must enter an integer type value"); 'need to make it ask user for another input if first one was of invalid type'
}
有用答案之后的代码版本:
//setX
public void setX()
{
//take the input from the user
string temp;
int temp2;
System.Console.WriteLine("Enter a value for X:");
temp = System.Console.ReadLine();
if (int.TryParse(temp, out temp2))
x = temp2;
else
{
Console.WriteLine("The value must be of integer type");
while (!int.TryParse(Console.ReadLine(), out temp2))
Console.WriteLine("The value must be of integer type");
x = temp2;
}
}
答案 0 :(得分:8)
while (!int.TryParse(Console.ReadLine(), out mynum))
Console.WriteLine("Try again");
编辑:
public void setX() {
Console.Write("Enter a value for X (int): ");
while (!int.TryParse(Console.ReadLine(), out x))
Console.Write("The value must be of integer type, try again: ");
}
试试这个。我个人更喜欢使用while
,但do .. while
也是有效的解决方案。问题是我不想在任何输入之前打印错误消息。但是while
对于更复杂的输入也存在问题,无法将其推入一行。这真的取决于你究竟需要什么。在某些情况下,我甚至建议使用goto
,甚至有些人可能会跟踪我,因为它会给我打鱼。
答案 1 :(得分:4)
即使问题已经标记为已回答,do-while
循环也可以更好地验证用户输入。
请注意您的代码:
Console.WriteLine("The value must be of integer type");
while (!int.TryParse(Console.ReadLine(), out temp2))
Console.WriteLine("The value must be of integer type");
您在顶部和底部都有相同的代码。这可以改变:
do {
Console.WriteLine("The value must be of integer type");
} while (!int.TryParse(Console.ReadLine(), out temp2));
答案 2 :(得分:2)
这也可以帮助
public int fun()
{
int Choice=0;
try
{
Choice = int.Parse(Console.ReadLine());
return choice;
}
catch (Exception)
{
return fun();
}
}
答案 3 :(得分:1)
我一直在想很多,但我只想出来了!
int number;
bool check;
do
{
Console.WriteLine("Enter an integer:");
check = int.TryParse(Console.ReadLine(), out num1);
}
while (!check);
此代码将循环,直到用户输入整数。这样,程序不会简单地报告错误,而是立即允许用户再次输入另一个正确的值。