Как инициализировать массив в Java? - PullRequest
387 голосов
/ 21 декабря 2009

Я инициализирую массив данных следующим образом:

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 указывает на ошибку в строке

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

Как мне решить проблему?

Ответы [ 10 ]

575 голосов
/ 21 декабря 2009
data[10] = {10,20,30,40,50,60,71,80,90,91};

Выше указано неверное (синтаксическая ошибка). Это означает, что вы присваиваете массив data[10], который может содержать только элемент.

Если вы хотите инициализировать массив, попробуйте использовать 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};

Обратите внимание на разницу между двумя декларациями. При назначении нового массива объявленной переменной необходимо использовать new.

Даже если вы исправите синтаксис, доступ к data[10] по-прежнему будет некорректным (Вы можете получить доступ только с data[0] до data[9], поскольку индекс массивов в Java основан на 0). Доступ к data[10] вызовет ArrayIndexOutOfBoundsException .

33 голосов
/ 21 декабря 2009

Попробуйте data = new int[] {10,20,30,40,50,60,71,80,90,91 };

25 голосов
/ 21 декабря 2009

Когда вы создаете массив размером 10, ему выделяется 10 слотов, но от 0 до 9. Этот цикл for поможет вам увидеть это немного лучше.

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;
        }
    }
}
14 голосов
/ 30 марта 2014

Вы можете сделать:

int[] data = {10,20,30,40,50,60,71,80,90,91};
10 голосов
/ 27 ноября 2013

Синтаксис

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

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

Пример:

int [] points = new int[]{ 1,2,3,4 };
8 голосов
/ 11 ноября 2016

Вместо того, чтобы учиться Неофициальные сайты учатся у оракула

ссылка следующая: Нажмите здесь

* Вы можете найти Инициализацию, а также объявление с полным описанием *

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 // размер массива 10 20 30 40 50 60 71 80 90 91

Отображение данных:

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

Выход: 10 20 30 40 50 60 71 80 90 91

3 голосов
/ 21 декабря 2009

Вы не можете инициализировать массив таким образом. В дополнение к тому, что предложили другие, вы можете сделать:

data[0] = 10;
data[1] = 20;
...
data[9] = 91;
2 голосов
/ 21 февраля 2018

Если вы хотите инициализировать массив в конструкторе, вы не можете использовать такие инициализаторы массива, как.

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

Просто измените его на

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

Вам не нужно указывать размер с помощью data[10] = new int[] { 10,...,91} Просто объявите свойство / поле с помощью int[] data; и инициализируйте его, как указано выше.Исправленная версия вашего кода будет выглядеть следующим образом:

public class Array {

    int[] data;

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

}

Как видите, скобки пусты.Нет необходимости указывать размер в скобках, потому что инициализация и ее размер определяются количеством элементов в фигурных скобках.

1 голос
/ 21 декабря 2009

вы пытаетесь установить для 10-го элемента массива значение try

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

FTFY

0 голосов
/ 18 января 2015

Может быть, это будет работать:

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};
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...