Страница 1 из 1

Объявление массива

Добавлено: 16 авг 2013, 23:23
Mr. Nobody

Код: Выделить всё

public class Constants {
	String[] Level;
	Level["1"] = "otvet1";
}

Здравствуйте, скажите, пожалуйста, что в этом коде неправильно?

Гуглил по объявлению массива, это нашел, а не работает.

Re: Объявление массива

Добавлено: 17 авг 2013, 00:28
rezak90
а в книжку по джаве заглянуть нельзя?
1) массив нужно инициализировать;
2) ключём массива выступает всегда целое число а не строка "1";

Re: Объявление массива

Добавлено: 17 авг 2013, 00:33
Mr. Nobody
в java можно не задавать массиву кол-во элементов? как в php, например

Re: Объявление массива

Добавлено: 17 авг 2013, 00:51
Mr. Nobody
Вот просто скопировал с урока:

Код: Выделить всё

int myArray[];
myArray = new int[10];
Все равно ошибка

Так не работает

Код: Выделить всё

public class Constants {
	String[] Level;
	Level = new String [12];
	Level[1] = "otvet1";
}

Re: Объявление массива

Добавлено: 17 авг 2013, 07:53
rezak90
А здесь уже не только не знание в Java а ещё и не знание в ООП. Level это поле класса, и последующие строки после его объявления считаются как поля класса и соответственно их объявления не правильно. Почитай что такое класс!

Re: Объявление массива

Добавлено: 17 авг 2013, 09:40
Mr. Nobody
Я же не спорю, что я это знаю, я читаю урок, там так написано.
Можете написать правильный код?

Re: Объявление массива

Добавлено: 17 авг 2013, 10:00
rezak90
Mr. Nobody писал(а):Я же не спорю, что я это знаю, я читаю урок, там так написано.
Можете написать правильный код?

Код: Выделить всё

public class Constants { 
    private String[] level;
    public Constants() {
       level = new String [12]; 
       level[1] = "otvet1";
    } 
}

Re: Объявление массива

Добавлено: 18 авг 2013, 03:02
Mr. Nobody
Имеется код
Constants.java

Код: Выделить всё

package com.example.kros;

public class Constants {
	public static String[] Level;
    
	public Constants() {
       Level = new String [20];
       Level[1] = "ответ1";
       Level[2] = "ответ2";
       Level[3] = "ответ3";
    }
}
Я хочу брать эти переменные из другого activity, делаю так
LevelActivity.java

Код: Выделить всё

Toast.makeText(this, "Ответ - " + Constants.Level[1], Toast.LENGTH_SHORT).show();
но приложение почему-то вылетает

Re: Объявление массива

Добавлено: 18 авг 2013, 03:33
Foenix
1. нужно смотреть лог, чтоб было понятно почему вылетает
2. скорее всего в логе написано, что у тебя NPE, и скорее всего в коде ты не создаешь нигде переменную Constants, но пытаешься ею воспользоваться.
3. а написать static подсказал эклипс? или почему там у тебя static?

Re: Объявление массива

Добавлено: 18 авг 2013, 09:09
Mikhail_dev
Во-первых замечу, что нумерация для массива идет с нуля, а не с единицы. Тут нету бага на сколько я вижу, но элементы начинаются с Level[0] - у тебя данный элемент равен Null. Последний же элемент массива будет иметь индекс Level[19].
Ну а во-вторых, как уже сказали, нужен лог. Скорее всего, сам класс Constants не инициализирован. Для этого попробуй класс поменять на
[syntax=java]
package com.example.kros;

public class Constants {
public static String[] Level;

static {
Level = new String [20];
Level[1] = "ответ1";
Level[2] = "ответ2";
Level[3] = "ответ3";
}
}
[/syntax]

Re: Объявление массива

Добавлено: 18 авг 2013, 11:46
Mr. Nobody
Foenix, static это просто значит, что константа, нет?
no--, спасибо, работает.

Re: Объявление массива

Добавлено: 18 авг 2013, 12:29
Foenix
нет , не константа