JAVA - проблемы инициализации отдельных элементов массива - PullRequest
1 голос
/ 13 августа 2010

Я очень новичок в программировании, и я должен что-то здесь упустить.Первый раздел работает.Второй раздел взрывается с ошибкой.Почему это так?

// this works
private static int[] test2 = {1,2,3};

// this is ok
private static int[] test1 = new int[3];
// these three lines do not work
// tooltip states ... "cannot find symbol.  class test1. ']' expected."
test1[0] = 1;
test1[1] = 2;
test1[2] = 3;

Ответы [ 3 ]

4 голосов
/ 13 августа 2010

Из того, что вы опубликовали, строки

test1[0] = 1;
test1[1] = 2;
test1[2] = 3;

должны быть внутри метода или конструктора.Похоже, у вас есть их на уровне класса.Допустим, MyClass это название вашего класса.Добавьте конструктор и поместите в него три оператора:

MyClass {
    test1[0] = 1;
    test1[1] = 2;
    test1[2] = 3;
}

Редактировать: Вы можете объявлять переменные только внутри класса.Оператор объявления может, однако, также включать инициализацию (в той же строке):

int[] arrayA; // declare an array of integers
int[] arrayB = new int[5]; // declare and create an array of integers
int[] arrayC = {1, 2, 3}; // declare, create and initialize an array of integers

Следующее, с другой стороны, не является объявлением и включает только инициализацию:

arrayB[0] = 1;

и поэтому он не может идти прямо под класс.Он должен быть заключен в метод, конструктор или блок инициализации.

См. Также:

Обучающее руководство по Java для Oracle

2 голосов
/ 13 августа 2010

Для работы вашего исходного файла Java должно быть что-то вроде этого:

public class Test
{
    // this works
    private static int[] test2 = {1,2,3};

    // this is ok
    private static int[] test1 = new int[3];

    public static void main( String args[] ){

        test1[0] = 1;
        test1[1] = 2;
        test1[2] = 3;
    }
}
1 голос
/ 13 августа 2010

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

public class Test {
   // this works
   private static int[] test2 = {1,2,3};

   // this is ok
   private static int[] test1 = new int[3];

   static {
       test1[0] = 1;
       test1[1] = 2;
       test1[2] = 3;
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...