我试图限制用户只在控制台中输入5位数字来进行C#。我有我的代码错误检查用户,但由于某种原因我输入后说... 6位数,控制台在while循环启动后停止。有人可以帮我弄清楚出了什么问题吗?提前谢谢!
Console.WriteLine("Enter the the zip code of the contact.");
temp = int.Parse(Console.ReadLine());
while (Console.ReadLine().Length != 5)
{
Console.WriteLine("Error. Zip code is not 5 digits. Please enter a valid number.");
temp = int.Parse(Console.ReadLine());
if (Console.ReadLine().Length == 5)
{
temp = int.Parse(Console.ReadLine());
address.zipCode = temp;
}
}
答案 0 :(得分:3)
您正在多次访问控制台。检查捕获的输入的长度 - temp
。试试这个:
var temp = Console.ReadLine();
while (temp.Length > 5)
{
Console.WriteLine("Error. Zip code is not 5 digits. Please enter a valid number.");
temp = Console.ReadLine();
}
address.zipCode = int.Parse(temp);
答案 1 :(得分:2)
我想你也可以这样使用..如果你想检查所有的长度。
if (Console.ReadLine().Length == 5)
{
temp = int.Parse(Console.ReadLine());
address.zipCode = temp;
}
else{
while (Console.ReadLine().Length != 5)
{
Console.WriteLine("Error. Zip code is not 5 digits. Please enter a valid number.");
temp = int.Parse(Console.ReadLine());
}
}
答案 2 :(得分:0)
可以这样做......
Console.WriteLine("Enter the the zip code of the contact.");
var temp = Console.ReadLine();
string zipcode = string.Empty;
while (temp.Length != 5)
{
Console.WriteLine("Error. Zip code is not 5 digits. Please enter a valid number.");
if (temp.Length == 5)
{
zipcode = temp;
break;
}
else
{
temp = Console.ReadLine();
}
}
Console.Write(zipcode);
答案 3 :(得分:0)
不要一次又一次地使用Console.Readline()
像这样更改你的代码。
Console.WriteLine("Enter the the zip code of the contact.");
var temp = int.Parse(Console.ReadLine());
while (temp.ToString().Length != 5)
{
Console.WriteLine("Error. Zip code is not 5 digits. Please enter a valid number.");
temp = int.Parse(Console.ReadLine());
if (temp.ToString().Length == 5)
{
temp = int.Parse(Console.ReadLine());
}
}
(要从null引用中保存,你可以执行if(temp< 100000&& temp> 9999))。
答案 4 :(得分:0)
将您的陈述修改为
Console.WriteLine("Enter the the zip code of the contact.");
do
{
temp = Console.ReadLine();
if (temp.Length!=5)
{
Console.WriteLine("Error. Zip code is not 5 digits. Please enter a valid number.");
}
else
{
address.zipCode = temp;
}
} while(temp.Length!=5);
完成!
答案 5 :(得分:0)
请查看下面给出的代码。我认为这将满足您的要求。我发现你使用了 address.zipCode ,但是在给定的代码中没有声明任何地方,所以我用 zipCode 替换了 address.zipCode 。
int temp,zipCode;
bool breakLoop = false;
Console.WriteLine("Enter the the zip code of the contact.");
while (breakLoop == false)
{
string userInput = Console.ReadLine();
if (userInput.Length != 5)
{
Console.WriteLine("Error. Zip code is not 5 digits. Please enter a valid number.");
continue;
}
int.TryParse(userInput, out temp);
if (temp == 0)
{
Console.WriteLine("Error. Please enter a valid number.");
continue;
}
zipCode = temp;
breakLoop = true;
break;
}
如果您对代码有任何问题,请与我们联系。