1

そういうコードを書いた

int[] count = new int[10];
int i = count.length;
int position = -1;
int num = kb.nextInt();

    while(i > 0)
    {
        if(count[i] == num)
        {
            position = i;
            break;
        }
         i--;
    }

しかし、私はjava.lang.ArrayIndexOutOfBoundsExceptionエラーが発生しました

意図は、配列内でユーザーが選択した番号の最後の出現を見つけることでした。

4

7 に答える 7

5

を設定しi = count.length;ます。配列は Java では 0 からインデックス付けされるためcount[count.length]、範囲外です。配列内の最後の有効なインデックスaは ですa.length -1

于 2013-06-27T11:57:12.950 に答える
4

最初の反復では、 にアクセスしますcount[count.length]

配列はゼロベースなので、初期化する必要があります

int i = count.length-1;
于 2013-06-27T11:57:06.157 に答える
4

これは間違っています :

int i = count.length;
...
while(i > 0)
{
  if(count[i] == num)//count[count.length] is out of bound. Maximum index is count.length-1

試す

int i = count.length-1;
...
while(i >= 0)
{
于 2013-06-27T11:57:30.720 に答える
2

配列「カウント」の長さは 10 です。Java 配列はインデックス 0 から始まります。したがって、最後の要素は長さ 1 = 9 になります。

i = count.length = 10 から始めます。

count[10] はその例外をスローします。

問題の迅速な解決策:

int i = count.length - 1;
于 2013-06-27T12:02:12.177 に答える
1
public class arra {
public static void main(String[] args) {
Scanner kb=new Scanner(System.in);
int[] count = new int[10];
int i = count.length-1;
int position = -1;
int num = kb.nextInt();

while(i > 0)
{
    if(count[i] == num)
    {
        position = i;
        break;
    }
     i--;
}
}
}
于 2013-06-27T12:03:24.607 に答える
0

最初のi値は 10 で、これは配列のサイズ +1 です --> IndexOutOfBoundException を引き起こします「最後」、インデックスは 9 です ;)

于 2013-06-27T11:59:38.687 に答える
0

それは正しいでしょう:

 int[] count = new int[10];
    int i = count.length;
    int position = -1;
    int num = kb.nextInt();

    while(i > 0)
    {
        i--;
        System.out.println(i);
        if(count[i] == num)
        {
            position = i;
            break;
        }

    }

配列は 10 個の項目で構成され、0 から始まり 9 で終わります

于 2013-06-27T12:02:55.210 に答える