-2

これは大学の研究室の場合です。ユーザーが入力した整数を取り込もうとして、それらを配列に入れて出力します。

コンパイルしようとするとエラーが発生します。

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

public class Lab3 {


public static void main(String[] args) {


int[] First = {};

for(int i=0;i<First.length;i++)
{
    First[i] = (int)(Math.random() *10 +1); 
    System.out.print(First[i] + " ");
}
for(int i=0;i<First.length;i++)
{






    if (First[i]%2==0)
    {

        System.out.println("Even numbers are:"+First[i]);
    }


}

for(int i=0;i<First.length;i+=2)    
{

    if (First[i]%2==0)
    {

        System.out.println("Even numbers are:"+First[i]);
    }



}

for(int i=0;i<First.length;i++)
{
        int temp = First[i];
        First[i] = First[First.length - i - 1];
        First[First.length - i - 1] = temp;
        System.out.println("Reverse is:"+temp);
}


System.out.println("First is:"+First[0]);
System.out.println("First is:"+First[9]);




}

}

4

4 に答える 4

4

することで

int[] First = {};
// is the same as
int[] First = new int[0];

要素が 0 の配列を作成しています。次に、最初の要素にアクセスしようとします。

System.out.println("First is:"+First[0]); // access first element of empty array?

要素がないので、どうすればそれらにアクセスできますか? 10 要素の配列を作成する

int[] First = new int[10];

静的コレクション (サイズ変更不可) が必要な場合、またはList実装を使用して動的コレクション (サイズ変更可能) を使用する場合。


Java の命名規則では、変数は小文字の英字で始まる必要があると規定されています。を使用しcamelCaseます。

于 2013-09-24T14:03:07.343 に答える
2
int[] First = {};

長さ 0 の配列を初期化します。

First[0]存在しません。宣言の一部として、または後で長さを記載してください。

First = new int[10]; //creates an array of 10 ints

上記は同じ例外をスローすることに注意してくださいFirst[11]

サイズが不明な場合は、代わりにArrayListを使用できます。

List<Integer> first = new ArrayList<Integer>();
first.add((int)Math.random() *10 +1);
于 2013-09-24T14:03:25.710 に答える
2

配列は時間とともに大きくなるため、代わりに List を使用する必要があります。配列が空の配列で初期化されているため、First[i]にアクセスできないのはそのためです(そして、永遠にそのままになります)。いくつかの要素(ユースケースではない)で配列を初期化するか、初期容量で new を使用することもできます。

于 2013-09-24T14:05:44.610 に答える