簡體   English   中英

C#從用戶輸入填充數組,而循環,w / sentinel-IndexOutOfBounds錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM