一直
面临这个问题,但无法真正弄清楚如何克服它;
它与用户输入有关 - 如果用户输入错误,我希望程序继续或重新提问;
一个例子 ;
- 我希望用户输入年龄
- 当用户正确输入年龄时,我希望程序继续(但在下面的代码中它询问了 5 次
- 如果用户输入错误的条目(即字符串),我希望程序重新要求输入年龄
感谢听到您的善意帮助
for (int i = 0; i < 5; i++)
{
int _Age;
Console.Write ("Please enter your age :")
string AgeEntry = Console.ReadLine();
bool AgeCheck = Int32.TryParse(AgeEntry, out _Age);
if (!AgeCheck)
{
Console.WriteLine("Please enter your age : ");
}
else
{
i--;
continue;
}
}
int age = 0;
while (true)
{
Console.WriteLine("Please enter your age:");
string entry = Console.ReadLine();
if (int.TryParse(entry, out age)) break;
}
这个想法只是运行一个"无限"循环,直到输入有效的年龄,此时我们break
出循环。
而不是无限循环:
int age = 0;
do
{
Console.WriteLine("Please enter your age:");
string entry = Console.ReadLine();
} while (!int.TryParse(entry, out age));
无限循环本身没有错。我只是觉得没有它更干净。
无限循环,只需发出"break;",它就会退出。
int _Age;
while( true )
{
Console.Write ("Please enter your age :")
string AgeEntry = Console.ReadLine();
bool AgeCheck = Int32.TryParse(AgeEntry, out _Age);
if ( AgeCheck == true ) { break; }
}
回答您关于被问 5 次的问题。 你有一个 for 循环,无论用户给出的答案如何,它都会在代码中旋转 5 次。
for (int i = 0; i < 5; i++)
{ your code is here }
在下面的代码中,在 do 循环之后,您将在答案变量中获得来自控制台的输入,在 age 变量中具有解析的 int。 可以在 VS 中创建新的控制台应用并将其粘贴到程序中.cs然后运行它进行测试。
using System;
namespace console {
internal class Program {
private static void Main( string[] args ) {
int age;
string answer;
do {
Console.Clear();
Console.Write( "Please enter your age: " );
answer = Console.ReadLine();
} while ( !int.TryParse( answer, out age ) );
Console.WriteLine( string.Empty );
Console.WriteLine( "Thanks, let's continue..." );
Console.Read();
}
}
}