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.