0

ユーザーに配列内のアイテムの数を入力するように求め、その配列に整数を入力するように求めるアプリを作成しようとしています。そして、それを印刷します。

実行すると、入力を求められますが、次のようになります。

スレッド「メイン」での例外 java.lang.ArrayIndexOutOfBoundsException: 10 at main.main(main.java:13)

import java.util.Scanner;

public class main {
public static void main(String [] args){
    Scanner scan = new Scanner(System.in);
    System.out.println("Input number of units in array: ");
    int i1 = scan.nextInt();
    int[] arrayOne= new int[i1];

    for(int i=0 ; i<=i1 ; i++){

        System.out.println("Enter " + i + " unit in array.");
        arrayOne[i] = scan.nextInt();

    }


    System.out.println(arrayOne);


}

}

私の間違いがどこにあるかを見つけるのを手伝ってもらえますか? いくつかの異なることを試しましたが、何も機能していないようです。

ありがとう!

4

2 に答える 2

5

配列はゼロベースです。ここで上限を超えています。交換:

for (int i = 0; i <= i1; i++) {

for (int i = 0; i < i1; i++) {

また、Arrays#toStringを使用して配列の内容を表示します。そうしないと、配列のObject#toString表現が表示されます。

System.out.println(Arrays.toString(arrayOne));
于 2013-05-11T00:12:55.103 に答える
0

あなたのコードは、ループのたびに新しいスキャンを行う必要があるようです。

また、(配列のサイズと比較して)1回の反復が多すぎます。

おそらく、このコードはよりうまく機能します:

import java.util.Scanner;

public class Main 
{
    public static void main(String [] args)
    {
        Scanner scan = new Scanner(System.in);
        System.out.println("Input number of units in array: ");
        int i1 = scan.nextInt();
        int[] arrayOne= new int[i1];
        for(int i=0 ; i<i1 ; i++)
        {
            System.out.println("Enter " + i + " unit in array.");
            Scanner other_scan = new Scanner(System.in);
            arrayOne[i] = other_scan.nextInt();
        }
        for(int i=0 ; i<i1 ; i++)
        {
            System.out.println("arrayOne["+i+"]: "+arrayOne[i]);
        }       
    }
}
于 2013-05-11T00:47:51.770 に答える