web-dev-qa-db-ja.com

Javaで配列を初期化する方法

私はこのように配列データを初期化しています:

public class Array {

    int data[] = new int[10]; 
    /** Creates a new instance of Array */
    public Array() {
        data[10] = {10,20,30,40,50,60,71,80,90,91};
    }

}

NetBeansはその行にエラーを指摘します

data[10] = {10,20,30,40,50,60,71,80,90,91};

どうすれば問題を解決できますか?

377
chatty
data[10] = {10,20,30,40,50,60,71,80,90,91};

上記は正しくありません(構文エラー)。つまり、要素を1つだけ保持できるdata[10]に配列を代入しているということです。

配列を初期化したい場合は、 Array Initializer を使用してみてください。

int[] data = {10,20,30,40,50,60,71,80,90,91};

// or

int[] data;
data = new int[] {10,20,30,40,50,60,71,80,90,91};

2つの宣言の違いに注目してください。宣言された変数に新しい配列を代入するときは、newを使用しなければなりません。

構文を修正しても、data[10]へのアクセスはまだ正しくありません(Javaの配列のインデックスは0から始まるため、data[0]にアクセスできるのはdata[9]のみです)。 data[10]にアクセスすると ArrayIndexOutOfBoundsException がスローされます。

563
Prasoon Saurav

data = new int[] {10,20,30,40,50,60,71,80,90,91 };を試す

33
Dean Povey

サイズが10の配列を作成すると、0から9までの10個のスロットが割り当てられます。

public class Array {
    int[] data = new int[10]; 
    /** Creates a new instance of an int Array */
    public Array() {
        for(int i = 0; i < data.length; i++) {
            data[i] = i*10;
        }
    }
}
24
Bernie Perez

できるよ:

int[] data = {10,20,30,40,50,60,71,80,90,91};
14
user2066936

構文

 Datatype[] variable = new Datatype[] { value1,value2.... }

 Datatype variable[]  = new Datatype[] { value1,value2.... }

例:

int [] points = new int[]{ 1,2,3,4 };
10
Vinayak

オフィシャルではないWebサイトはOracleのWebサイトから学ぶのではなく

リンクは続きます: ここをクリック

*初期化と完全な記述を含む宣言を見つけることができます*

int n; // size of array here 10
int[] a = new int[n];
for (int i = 0; i < a.length; i++)
{
    a[i] = Integer.parseInt(s.nextLine()); // using Scanner class
}

入力 :10 //配列サイズ10 20 30 40 50 60 71 80 90 91

データの表示:

for (int i = 0; i < a.length; i++) 
{
    System.out.println(a[i] + " ");
}

出力: 10 20 30 40 50 60 71 80 90 91

そのような配列を初期化することはできません。他の人が提案したことに加えて、あなたはすることができます:

data[0] = 10;
data[1] = 20;
...
data[9] = 91;
3
fastcodejava

コンストラクタで配列を初期化したい場合は、のような配列初期化子を使用することはできません。

data= {10,20,30,40,50,60,71,80,90,91};

に変更するだけです

data = new int[] {10,20,30,40,50,60,71,80,90,91};

サイズをdata[10] = new int[] { 10,...,91}で指定する必要はありません。プロパティ/フィールドをint[] data;で宣言し、上記のように初期化するだけです。コードの修正バージョンは次のようになります。

public class Array {

    int[] data;

    public Array() {
        data = new int[] {10,20,30,40,50,60,71,80,90,91};
    }

}

ご覧のとおり、括弧は空です。初期化とそのサイズは中括弧の間の要素の数で指定されるため、大括弧の間のサイズを指定する必要はありません。

2
Sedat Kilinc

配列の10番目の要素を配列tryに設定しようとしています

data = new int[] {10,20,30,40,50,60,71,80,90,91};

FTFY

1
schubySteve

配列変数の宣言

プログラムで配列を使用するには、その配列を参照する変数を宣言し、その変数が参照できる配列の型を指定する必要があります。これが配列変数を宣言するための構文です -

構文

dataType[] arrayRefVar;   // preferred way.
or
dataType arrayRefVar[];  // works but not preferred way.

注 - スタイルdataType [] arrayRefVarが推奨されます。スタイルdataType arrayRefVar []はC/C++言語に由来し、C/C++プログラマーを収容するためにJavaで採用されました。

次のコードスニペットは、この構文の例です -

double[] myList;   // preferred way.
or
double myList[];   // works but not preferred way.

配列を作成する

あなたは次の構文でnew演算子を使用して配列を作成することができます -

構文

arrayRefVar = new dataType[arraySize];

上記のステートメントは2つのことを行います -

  1. 新しいdataType [arraySize]を使って配列を作成します。

  2. 新しく作成された配列の参照を変数arrayRefVarに割り当てます。

以下に示すように、配列変数の宣言、配列の作成、および変数への配列の参照の割り当てを1つのステートメントにまとめることができます -

dataType[] arrayRefVar = new dataType[arraySize];

あるいは、以下のように配列を作成することができます -

dataType[] arrayRefVar = {value0, value1, ..., valuek};

配列要素はインデックスを介してアクセスされます。配列インデックスは0から始まります。つまり、0からarrayRefVar.length-1までです。

次の文は、配列変数myListを宣言し、double型の10要素の配列を作成し、その参照をmyListに代入します -

double[] myList = new double[10];

二次元配列も同様に初期化することができます。

- 構文

dataType[][] arrayRefVar = new dataType[arraySize][arraySize];
Ex- int[][] arr=new int[5][5];
0
ashish

多分これはうまくいくでしょう:

public class Array {

    int data[] = new int[10]; 
    /* Creates a new instance of Array */
    public Array() {
        data= {10,20,30,40,50,60,71,80,90,91};
    }
}
0