我尝试使用while
创建简单的错误处理,但我无法清除字符串。
string RelDstring;
int RelD;
bool ifintreld = int.TryParse(RelDstring, out RelD);
while (ifintreld != true)
{
RelDstring = null;
Console.WriteLine("Podano bledny rok wydania, uzyj liczb calkowitych.");
RelDstring = Console.ReadLine();
}
RelD = Convert.ToInt32(RelDstring);
它只是无限循环,好像我的string
一直不正确。我怎样才能清除我的字符串?
答案 0 :(得分:4)
您需要将TryParse
置于循环中,以便在重试后查看输入是否有效:
string RelDstring;
int RelD;
Console.WriteLine("Podaj rok wydania");
RelDstring = Console.ReadLine(); // copied from previous question
bool ifintreld = int.TryParse(RelDstring, out RelD);
while (ifintreld != true)
{
Console.WriteLine("Podano bledny rok wydania, uzyj liczb calkowitych.");
RelDstring = Console.ReadLine();
ifintreld = int.TryParse(RelDstring, out RelD);
}
另外:
null
答案 1 :(得分:3)
您应该更改bool变量ifintreld
。字符串未在循环中检查。
答案 2 :(得分:1)
请改为尝试:
string RelDstring;
int RelD;
bool ifintreld;
RelDstring = Console.ReadLine();
ifintreld = int.TryParse(RelDstring, out RelD);
while(!ifintreld)
{
Console.WriteLine("Podano bledny rok wydania, uzyj liczb calkowitych.");
RelDstring = Console.ReadLine();
ifintreld = int.TryParse(RelDstring, out RelD);
}
答案 3 :(得分:0)
好了,不得不谷歌翻译这个,你可以这样做。我假设您只是验证用户输入的有效年份。没有理由循环这个。
string year = Console.ReadLine();
DateTime validYear;
if (!DateTime.TryParseExact(year, "yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out validYear))
{
Console.WriteLine("Invalid Year");
}
答案 4 :(得分:-1)
string relDstring;
int relD;
do
{
Console.WriteLine("Podano bledny rok wydania, uzyj liczb calkowitych.");
relDstring = Console.ReadLine();
} while(!int.TryParse(relDstring, out relD);