Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Проблема с переменной в Апплете.


Автор: Guest 18.7.2004, 12:32
Обьявляю переменнйю так:

People p[] = new People[8];

...
class People {

protected String name;
protected byte age;

People(String nm, byte ag) {
name=nm;
age=ag;

getName() {
return name;
}

}
}
...

Инициализирую эту переменную в INIT апплета так:

p[1] = new People("IVANOV", 3);


Далее в событии аплета ---> paint(Graphics g) Делаю проверку:

if (p[1].getName() == "IVANOV") {
g.drawImage(MYimage, 40, 10, 79, 100, this);
}

и запускаю апплет, но рисунок не выводится. Появляется сообщение о куче ошибок:

java.lang.NullPointerException at mynew.myApplet.paint(myApplet.java:73) at sun.awt.RepaintArea.paint(RepaintArea.java:177) at sun.awt.windows.WComponentPeer.handleEvent(WComponentPeer.java:260) at java.awt.Component.dispatchEventImpl(Component.java:3678) at java.awt.Container.dispatchEventImpl(Container.java:1627) at java.awt.Component.dispatchEvent(Component.java:3477) at java.awt.EventQueue.dispatchEvent(EventQueue.java:456) at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137) at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)


В чем проблема????

Автор: LSD 18.7.2004, 22:44
1) сравнение строк надо проводить проводить с помощью equals см. соседний топик.
2) к сожалению не совсем ястно какая строка является 73. но мне кажется что проблема в p[1].getName(), т.е. элементу массива p[1] не присвоенно никакого значения, вставь отладочный вывод и проверь это, или пройдись пошагово отладчиком.

Автор: DarkDS 19.7.2004, 13:10
Самое лудшее - код в студию, чтобы могли более подробно сказать где и что smile.gif

Автор: Domestic Cat 19.7.2004, 15:56
Цитата
2) к сожалению не совсем ястно какая строка является 73. но мне кажется что проблема в p[1].getName(), т.е. элементу массива p[1] не присвоенно никакого значения, вставь отладочный вывод и проверь это, или пройдись пошагово отладчиком.


Или MYimage не инициализирован

Автор: LSD 19.7.2004, 18:08
Цитата(Domestic @ 19.7.2004, 15:56)
Или MYimage не инициализирован

Если бы MYimage был бы равен null, то стек вызовов был-бы другим.

Автор: Domestic Cat 19.7.2004, 18:40
Почему? Содержание стека зависит от ОС да и от много еще чего; все что из стека видно -
так это то что диспетчер пытался вызвать paint и получил NullPointerException

Автор: LSD 19.7.2004, 19:00
Из стека видно что ошибка была в myApplet.java, если бы проблема была в MYimage, то ошибка была-бы где-то внутри Graphics или глубже.

Автор: Domestic Cat 19.7.2004, 19:34
Согласен, тогда наверху стека был бы drawImage. Но вроде бы p[1] инициализирован? Нужен код.

Автор: DarkDS 20.7.2004, 11:26
Я это даавно сказал smile.gif

Автор: Domestic Cat 20.7.2004, 19:38
Однако автор не заинтересован smile.gif

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)