C#异常处理,暂时停止循环
我是C#的新手,我真的需要你在一个项目上的帮助 这个想法是要求用户在1-20之间输入10个数字。用户输入的数字存储在一个数组中。在下一阶段,我生成了一个随机数,然后程序将用户先前输入的所有数字与随机数进行比较。如果其中一个数字与程序匹配,则编写类似“youwin!”的代码 我当前的解决方案还可以,但我想要比当前解决方案更好的异常处理。我的问题是: 正如您在下面的代码中所看到的,我依靠循环和try/catch来确保用户输入有效的数字,但是在测试了几次之后,我发现如果您输入了有效的输入,比如说第一次输入,而不是第二次输入,那么未验证的输入仍然会发送到for循环和下一个索引。 我希望确保用户输入一个有效的数字,如果没有,for循环将暂时“暂停”,直到输入下一个有效数字C#异常处理,暂时停止循环,c#,arrays,for-loop,exception,try-catch,C#,Arrays,For Loop,Exception,Try Catch,我是C#的新手,我真的需要你在一个项目上的帮助 这个想法是要求用户在1-20之间输入10个数字。用户输入的数字存储在一个数组中。在下一阶段,我生成了一个随机数,然后程序将用户先前输入的所有数字与随机数进行比较。如果其中一个数字与程序匹配,则编写类似“youwin!”的代码 我当前的解决方案还可以,但我想要比当前解决方案更好的异常处理。我的问题是: 正如您在下面的代码中所看到的,我依靠循环和try/catch来确保用户输入有效的数字,但是在测试了几次之后,我发现如果您输入了有效的输入,比如说第一次
bool start = true; //Create a loop.
{
while (start == true)
{
try
{
for (int x = 0; x < vektor.Length; x++) //To fill my array.
{
Console.WriteLine("Enter a number between 1 and 20:");
vektor[x] = int.Parse(Console.ReadLine());
start = false;
}
}
catch
{
Console.WriteLine("Error, you need to enter a number!");
}
}
}
bool start=true//创建一个循环。
{
while(start==true)
{
尝试
{
用于(int x=0;x
创建一种方法,向用户提问,直到有效后才给出答案:
public int Ask(string question, int lower, int upper){
while(true)
{
Console.WriteLine(question);
string input = Console.ReadLine();
bool valid = int.TryParse(input, out int inputInt); //valid is true if it was a number
valid = valid && inputInt >= lower && inputInt <= upper; //but also test was it in range?
if(valid)
return inputInt; //if not valid, repeat the question because the loop is infinite
}
}
所以有效变成了错误。我们只能避开Ask()方法,如果valid
为true,则返回有效数字,否则循环将再次循环
--
现在你可以有一个数字列表,假设你想要10,我们可以循环并向列表中添加数字,直到得到10:
List<int> numbers = new List<int>();
while(numbers.Count < 10)
{
int validNumber = Ask("Enter a nubmer between 1 and 20: ", 1, 20);
numbers.Add(validNumber);
}
列表编号=新列表();
while(number.Count<10)
{
int validNumber=Ask(“输入一个介于1和20之间的数值:”,1,20);
编号。添加(有效编号);
}
如果愿意,可以将其作为数组执行:
int[] numbers = new int[10];
for(int x = 0; x<numbers.length; x++)
{
int validNumber = Ask("Enter a nubmer between 1 and 20: ", 1, 20);
numbers[x] = validNumber;
}
int[]数字=新的int[10];
对于(int x=0;xUseint.TryParse()
,您不需要异常处理-只需查看TryParse()
是否返回true或false并相应地响应即可。谢谢!我也将查看该解决方案!谢谢!这对我帮助很大!
int[] numbers = new int[10];
for(int x = 0; x<numbers.length; x++)
{
int validNumber = Ask("Enter a nubmer between 1 and 20: ", 1, 20);
numbers[x] = validNumber;
}