Как инициализировать массив в Java?


434

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

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

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


3
Вы можете заменить это «int data [] = new int [10]» на «int data []». Вы тратите память там.
фактор

Ответы:


642
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 .


2
На самом деле, основная причина, по которой это неверно, заключается в том, что это синтаксическая ошибка! AIOB произойдет только в том случае, если синтаксис будет приемлемым.
Стивен С

1
Не могли бы вы помочь мне, если я объявлю массив, как это: public static void product(int[] array){ int[] productArray = new int[array.length];и хочу установить все значения productArray нуля , что я должен написать? (Я думаю, что я должен написать цикл и установить все значения на ноль, есть ли лучший способ сделать это?)
Hengameh

2
@Hengameh: по умолчанию оно установлено в 0. См. Stackoverflow.com/a/2154340/1000655
Нил Гокли

39

Пытаться data = new int[] {10,20,30,40,50,60,71,80,90,91 };


1
+1. У вас есть дополнительная открывающая скобка. Можно также написать: data [0] = 10; данные [1] = 20; .... после int data [] = new int [10], но это слишком много кода, и в итоге он сделает то же самое.
Хэмиш Грубиджан

28

Когда вы создаете массив размером 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;
        }
    }
}

16

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

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

3
Мне интересно, какое значение это добавляет к принятому ответу за 5 лет до этого.
TylerH

12

Синтаксис

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

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

Пример :

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

8

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

ссылка следует: нажмите здесь

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

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
}

Ввод : 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

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

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

3

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

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} Just, объявите свойство / поле с помощью int[] data;и инициализируйте его, как указано выше. Исправленная версия вашего кода будет выглядеть следующим образом:

public class Array {

    int[] data;

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

}

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


2

вы пытаетесь установить 10-й элемент массива в массив

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

FTFY


0

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

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
Чем это отличается от вопроса? Пожалуйста, расширьте свой ответ!
Александр Фогт

2
Инициализатор массива не допускается в конструкторах !!!! Вы должны по крайней мере проверить свои предложения, прежде чем публиковать их ...
Седат Килинк
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.