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

Ответить
Mr. Nobody
Сообщения: 40
Зарегистрирован: 22 апр 2013, 21:28

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

Сообщение Mr. Nobody » 16 авг 2013, 23:23

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

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

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

Гуглил по объявлению массива, это нашел, а не работает.
Вложения
2013.08.17-00.22.26.png
2013.08.17-00.22.26.png (2.8 КБ) 4841 просмотр

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

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

Сообщение rezak90 » 17 авг 2013, 00:28

а в книжку по джаве заглянуть нельзя?
1) массив нужно инициализировать;
2) ключём массива выступает всегда целое число а не строка "1";
R.id.team
Политика на форуме запрещена

Mr. Nobody
Сообщения: 40
Зарегистрирован: 22 апр 2013, 21:28

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

Сообщение Mr. Nobody » 17 авг 2013, 00:33

в java можно не задавать массиву кол-во элементов? как в php, например

Mr. Nobody
Сообщения: 40
Зарегистрирован: 22 апр 2013, 21:28

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

Сообщение Mr. Nobody » 17 авг 2013, 00:51

Вот просто скопировал с урока:

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

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

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

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

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

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

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

Сообщение rezak90 » 17 авг 2013, 07:53

А здесь уже не только не знание в Java а ещё и не знание в ООП. Level это поле класса, и последующие строки после его объявления считаются как поля класса и соответственно их объявления не правильно. Почитай что такое класс!
R.id.team
Политика на форуме запрещена

Mr. Nobody
Сообщения: 40
Зарегистрирован: 22 апр 2013, 21:28

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

Сообщение Mr. Nobody » 17 авг 2013, 09:40

Я же не спорю, что я это знаю, я читаю урок, там так написано.
Можете написать правильный код?

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

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

Сообщение rezak90 » 17 авг 2013, 10:00

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

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

public class Constants { 
    private String[] level;
    public Constants() {
       level = new String [12]; 
       level[1] = "otvet1";
    } 
}
R.id.team
Политика на форуме запрещена

Mr. Nobody
Сообщения: 40
Зарегистрирован: 22 апр 2013, 21:28

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

Сообщение Mr. Nobody » 18 авг 2013, 03:02

Имеется код
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();
но приложение почему-то вылетает

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

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

Сообщение Foenix » 18 авг 2013, 03:33

1. нужно смотреть лог, чтоб было понятно почему вылетает
2. скорее всего в логе написано, что у тебя NPE, и скорее всего в коде ты не создаешь нигде переменную Constants, но пытаешься ею воспользоваться.
3. а написать static подсказал эклипс? или почему там у тебя static?
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

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

Сообщение Mikhail_dev » 18 авг 2013, 09:09

Во-первых замечу, что нумерация для массива идет с нуля, а не с единицы. Тут нету бага на сколько я вижу, но элементы начинаются с 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]

Mr. Nobody
Сообщения: 40
Зарегистрирован: 22 апр 2013, 21:28

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

Сообщение Mr. Nobody » 18 авг 2013, 11:46

Foenix, static это просто значит, что константа, нет?
no--, спасибо, работает.

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

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

Сообщение Foenix » 18 авг 2013, 12:29

нет , не константа
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Ответить