Java'da bir dizi nasıl başlatılır?


434

Ben böyle bir dizi başlatılması:

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 bu satırdaki bir hatayı gösteriyor:

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

Sorunu nasıl çözebilirim?


3
"İnt data [] = new int [10]" ifadesini "int data []" ile değiştirebilirsiniz. Orada hafızayı boşa harcıyorsun.
missingfaktor

Yanıtlar:


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

Yukarıdakiler doğru değil (sözdizimi hatası). Bu, data[10]yalnızca bir öğeyi tutabilen bir dizi atadığınız anlamına gelir .

Bir diziyi başlatmak istiyorsanız, Array Initializer'ı kullanmayı deneyin :

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

İki bildirim arasındaki farka dikkat edin. Bildirilen bir değişkene yeni bir dizi atarken, newkullanılmalıdır.

Sözdizimi düzeltmek bile, erişimde bulunan data[10](Yalnızca erişebilir hala yanlıştır data[0]için data[9]Java diziler endeksi çünkü 0 tabanlı). Erişilmesi data[10]bir ArrayIndexOutOfBoundsException kurar .


2
Aslında, yanlış olmasının birincil nedeni sözdizimi hatası olmasıdır! AIOB yalnızca sözdizimi kabul edilebilir olduğunda gerçekleşir.
Stephen C

1
Lütfen bana yardım eder misiniz, eğer böyle bir dizi bildirirsem: public static void product(int[] array){ int[] productArray = new int[array.length];ve productArray sıfırın tüm değerlerini ayarlamak istersem , ne yazmalıyım? (Ben bir döngü yazmak ve tüm değerleri sıfıra ayarlamak gerektiğini düşünüyorum, bunu yapmak için daha iyi bir yolu var mı?)
Hengameh

2
@Hengameh: Varsayılan olarak 0 olarak başlatılır. Bkz. Stackoverflow.com/a/2154340/1000655
Neal Gokli

39

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


1
+1. Ekstra bir açılış paranteziniz var. Bir de yazılabilir: data [0] = 10; veri [1] = 20; int data'dan sonra [] = new int [10], ama çok fazla kod ve aynı şeyi yapacaktır.
Hamish Grubijan

28

10 boyutlu bir dizi oluşturduğunuzda 10 yuva ayırdı ancak 0'dan 9'a ayırdı. Bu döngü için bunu biraz daha iyi görmenize yardımcı olabilir.

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

Yapabilirsin:

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

3
Bunun 5 yıl önceki kabul edilen cevabın üstüne ne kattığını merak ediyorum.
TylerH

12

Sözdizimi

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

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

Misal :

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

8

Resmi olmayan web sitelerini öğrenmek yerine oracle web sitesinden öğrenin

bağlantı aşağıdaki gibidir: Buraya tıklayın

* Başlatma ve deklarasyonu tam açıklama ile bulabilirsiniz *

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
}

Giriş : 10 // dizi boyutu 10 20 30 40 50 60 71 80 90 91

Verileri görüntüleme:

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

Çıktı: 10 20 30 40 50 60 71 80 90 91


3

Böyle bir diziyi başlatamazsınız. Diğerlerinin önerilerine ek olarak şunları yapabilirsiniz:

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

3

Bir yapıcıdaki bir diziyi başlatmak istiyorsanız, bu dizi başlatıcısını aşağıdaki gibi kullanamazsınız.

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

Sadece olarak değiştir

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

Boyutu data[10] = new int[] { 10,...,91} yalnızca Özellik / alanı ile bildirip int[] data;yukarıdaki gibi başlatmanız ile belirtmeniz gerekmez . Kodunuzun düzeltilmiş sürümü aşağıdaki gibi görünecektir:

public class Array {

    int[] data;

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

}

Gördüğünüz gibi köşeli ayraç boş. Parantezler arasındaki boyutu söylemenize gerek yoktur, çünkü başlatma ve boyutu, kıvırcık parantezler arasındaki elemanların sayısı ile belirtilir.


2

dizinin 10. elemanını dizi denemesine ayarlamaya çalışıyorsunuz

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

FTFY


0

Belki bu işe yarar:

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
Bunun sorudan farkı nedir? Lütfen cevabınızı uzatın!
Alexander Vogt

2
Oluşturucularda dizi başlatıcısına izin verilmiyor !!!! Tekliflerinizi göndermeden önce en azından test etmelisiniz ...
Sedat Kilinc
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.