[英]c# populating array from user input, while loop, w/sentinel - IndexOutOfBounds error
我不明白為什么我總是收到IndexOutOfBounds異常。 允許用戶輸入最多10個數字或標記值-99。 錯誤發生在第10個數字上。 如果我將numbers.Length修改為numbers.Length -1,則不會拋出錯誤,但只能接受9個數字。 任何想法?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static System.Console;
namespace SomeProggy
{
class Program
{
static void Main(string[] args)
{
int[] numbers = new int[10];
int x = 0;
string entryString = "";
int counter= -1;
while (numbers[x] != 10 && counter < numbers.Length && entryString != "-99")
{
Write("Enter up to 10 numbers > ");
entryString = ReadLine();
numbers[x] = Convert.ToInt32(entryString);
x++;
counter++;
}
}
}
}
更改循環條件,以便首先檢查數組長度:
while (counter < numbers.Length && numbers[x] != 10 && entryString != "-99")
{
// ...
}
否則,當x
增加到10
,它將在訪問numbers[x]
超出范圍。 這將在counter < numbers.Length
檢查之前發生。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.