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?


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 .


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 };


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;
        }
    }
}

16

Anda dapat melakukan:

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

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 };

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


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;

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.


2

Anda mencoba mengatur elemen 10 array untuk mencoba array

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

FTFY


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};
    }
}

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.