Wie initialisiere ich ein Array in Java?

434

Ich initialisiere ein Array wie folgt:

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 weist auf einen Fehler in dieser Zeile hin:

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

Wie kann ich das Problem lösen?

gesprächig
quelle
3
Sie könnten "int data [] = new int [10]" durch "int data []" ersetzen. Sie verschwenden dort Speicher.
fehlender Faktor

Antworten:

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

Das obige ist nicht korrekt (Syntaxfehler). Dies bedeutet, dass Sie ein Array zuweisendata[10] das nur ein Element enthalten kann.

Wenn Sie ein Array initialisieren möchten, verwenden Sie den 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};

Beachten Sie den Unterschied zwischen den beiden Erklärungen. Beim Zuweisen eines neuen Arrays zu einer deklarierten Variablen newmuss verwendet werden.

Selbst wenn Sie die Syntax korrigieren, ist der Zugriff data[10]immer noch falsch (Sie können nur darauf zugreifen data[0], data[9]weil der Index der Arrays in Java auf 0 basiert). Beim Zugriff data[10]wird eine ArrayIndexOutOfBoundsException ausgelöst .

Prasoon Saurav
quelle
2
Der Hauptgrund dafür ist, dass es sich um einen Syntaxfehler handelt! Das AIOB würde nur passieren, wenn die Syntax akzeptabel wäre.
Stephen C
1
Könnten Sie mir bitte helfen, wenn ich ein Array wie dieses deklariere public static void product(int[] array){ int[] productArray = new int[array.length];und alle Werte auf productArray Null setzen möchte , was soll ich schreiben? (Ich denke, ich sollte eine Schleife schreiben und alle Werte auf Null setzen.
Gibt
2
@Hengameh: Es ist standardmäßig auf 0 initialisiert. Siehe stackoverflow.com/a/2154340/1000655
Neal Gokli
39

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

Dean Povey
quelle
1
+1. Sie haben eine zusätzliche Öffnungsstrebe. Man kann auch schreiben: data [0] = 10; Daten [1] = 20; .... nach int data [] = new int [10], aber es ist zu viel Code und es wird am Ende dasselbe tun.
Hamish Grubijan
28

Wenn Sie ein Array der Größe 10 erstellen, werden 10 Slots zugewiesen, jedoch von 0 bis 9. Diese for-Schleife kann Ihnen dabei helfen, dies etwas besser zu erkennen.

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;
        }
    }
}
Bernie Perez
quelle
16

Du kannst tun:

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

quelle
3
Ich frage mich, welchen Mehrwert dies zusätzlich zu der akzeptierten Antwort von 5 Jahren zuvor bietet.
TylerH
12

Syntax

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

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

Beispiel:

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

Anstatt nicht offizielle Websites zu lernen, lernen Sie von der Oracle-Website

Link folgt: Klicken Sie hier

* Sie finden Initialisierung sowie Deklaration mit vollständiger Beschreibung *

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
}

Eingabe : 10 // Arraygröße 10 20 30 40 50 60 71 80 90 91

Daten anzeigen:

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

Ausgabe: 10 20 30 40 50 60 71 80 90 91

Shiva
quelle
3

Sie können ein solches Array nicht initialisieren. Zusätzlich zu den Vorschlägen anderer können Sie Folgendes tun:

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

Wenn Sie ein Array in einem Konstruktor initialisieren möchten, können Sie diese Array-Initialisierer nicht wie verwenden.

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

Ändern Sie es einfach in

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

Sie müssen die Größe nicht mit angeben. Deklarieren Sie data[10] = new int[] { 10,...,91} einfach die Eigenschaft / das Feld mit int[] data;und initialisieren Sie sie wie oben. Die korrigierte Version Ihres Codes würde wie folgt aussehen:

public class Array {

    int[] data;

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

}

Wie Sie sehen, sind die Klammern leer. Die Größe zwischen den Klammern muss nicht angegeben werden, da die Initialisierung und ihre Größe durch die Anzahl der Elemente zwischen den geschweiften Klammern angegeben werden.

Sedat Kilinc
quelle
2

Sie versuchen, das 10. Element des Arrays auf den Array-Versuch zu setzen

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

FTFY

schubySteve
quelle
0

Vielleicht funktioniert das:

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};
    }
}
Sajjad Behravesh
quelle
6
Wie unterscheidet sich das von der Frage? Bitte verlängern Sie Ihre Antwort!
Alexander Vogt
2
Array-Initialisierer sind in Konstruktoren nicht erlaubt !!!! Sie sollten zumindest Ihre Vorschläge testen, bevor Sie sie veröffentlichen ...
Sedat Kilinc