Bagaimana cara menginisialisasi array di Java?

434

Saya menginisialisasi array seperti ini:

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 menunjuk ke kesalahan di baris ini:

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

Bagaimana saya bisa menyelesaikan masalah?

cerewet
sumber
3
Anda dapat mengganti "int data [] = new int [10]" dengan "int data []". Anda membuang-buang memori di sana.
missingfaktor

Jawaban:

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

Di atas tidak benar (kesalahan sintaks). Ini berarti Anda menugaskan sebuah array data[10]yang dapat menampung elemen.

Jika Anda ingin menginisialisasi array, coba gunakan 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};

Perhatikan perbedaan antara kedua deklarasi tersebut. Saat menetapkan array baru ke variabel yang dideklarasikan, newharus digunakan.

Bahkan jika Anda benar sintaks, pengaksesan data[10]masih salah (Anda hanya dapat mengakses data[0]ke data[9]karena indeks array di Jawa adalah 0-based). Mengakses data[10]akan membuang ArrayIndexOutOfBoundsException .

Prasoon Saurav
sumber
2
Sebenarnya, alasan utama itu salah adalah karena itu adalah kesalahan sintaks! AIOB hanya akan terjadi jika sintaksinya dapat diterima.
Stephen C
1
Bisakah Anda membantu saya, Jika saya mendeklarasikan array seperti ini: public static void product(int[] array){ int[] productArray = new int[array.length];dan ingin mengatur semua nilai productArray nol , apa yang harus saya tulis? (Saya pikir saya harus menulis satu lingkaran dan mengatur semua nilai ke nol, apakah ada cara yang lebih baik untuk melakukan ini?)
Hengameh
2
@ Hengameh: Ini diinisialisasi ke 0 secara default. Lihat stackoverflow.com/a/2154340/1000655
Neal Gokli
39

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

Dean Povey
sumber
1
+1. Anda memiliki brace pembuka tambahan. Orang juga dapat menulis: data [0] = 10; data [1] = 20; .... setelah data int [] = int baru [10], tetapi terlalu banyak kode dan pada akhirnya akan melakukan hal yang sama.
Hamish Grubijan
28

Ketika Anda membuat larik ukuran 10 itu dialokasikan 10 slot tetapi dari 0 hingga 9. Ini untuk loop mungkin membantu Anda melihat itu sedikit lebih baik.

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
sumber
16

Anda dapat melakukan:

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

sumber
3
Saya ingin tahu nilai apa yang ditambahkan di atas jawaban yang diterima dari 5 tahun sebelumnya.
TylerH
12

Sintaksis

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

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

Contoh:

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

Daripada mempelajari situs web yang tidak resmi, belajarlah dari situs web oracle

tautan berikut: Klik di sini

* Anda dapat menemukan Inisialisasi serta deklarasi dengan deskripsi lengkap *

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
}

Input : 10 // ukuran array 10 20 30 40 50 60 71 80 90 91

Menampilkan data:

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

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

Shiva Nandam Sirmarigari
sumber
3

Anda tidak dapat menginisialisasi array seperti itu. Selain apa yang disarankan orang lain, Anda dapat melakukan:

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

Jika Anda ingin menginisialisasi array di konstruktor, Anda tidak dapat menggunakan inisialisasi array seperti.

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

Ubah saja menjadi

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

Anda tidak harus menentukan ukuran dengan data[10] = new int[] { 10,...,91} Hanya mendeklarasikan properti / bidang dengan int[] data;dan menginisialisasi seperti di atas. Versi kode Anda yang sudah diperbaiki akan terlihat seperti berikut:

public class Array {

    int[] data;

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

}

Seperti yang Anda lihat braket kosong. Tidak perlu memberi tahu ukuran antara tanda kurung, karena inisialisasi dan ukurannya ditentukan oleh jumlah elemen antara tanda kurung keriting.

Sedat Kilinc
sumber
2

Anda mencoba mengatur elemen 10 array untuk mencoba array

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

FTFY

schubySteve
sumber
0

Mungkin ini akan berhasil:

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
sumber
6
Bagaimana ini berbeda dari pertanyaan? Tolong sampaikan jawaban Anda!
Alexander Vogt
2
Penginisialisasi array tidak diizinkan di konstruktor !!!! Anda setidaknya harus menguji proposal Anda, sebelum mempostingnya ...
Sedat Kilinc