|
|
|
Вопрос по инициализации полей
|
|||
|---|---|---|---|
|
#18+
Добрый день всем. Подскажите пожалуйста в чем проблема. Есть такой код. Главный класс Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. Часть класса, производящего вычисления Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Часть класса отвечающего за интерфейс Код: java 1. 2. 3. Проблема в том что возникает NullPointer в указанной строке хотя инициализация явно происходит до обращения к массиву. Раньше обращение было в конструкторе, я думал что проблема была в том что конструктор инициализируется раньше чем вызывается метод в main'e вынес цикл в отдельный метод, но ошибка все равно осталась. Если инициализировать массив внутри метода интерфейса, то всё ок. Все используемые классы и методы паблик и находятся в одном пакете. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2016, 10:23 |
|
||
|
Вопрос по инициализации полей
|
|||
|---|---|---|---|
|
#18+
archeliteПроблема в том что возникает NullPointer в указанной строке хотя инициализация явно происходит до обращения к массиву. Проблема в том что вы не используете отладчик, чтобы посмотреть какия из трех ссылок null и по шагам пройти весь процесс инициализации. archeliteРаньше обращение было в конструкторе, я думал что проблема была в том что конструктор инициализируется раньше чем вызывается метод в main'e вынес цикл в отдельный метод, но ошибка все равно осталась. Вы не "думали", а "предполагали". Метод научного тыка, проб и ошибок. archeliteЕсли инициализировать массив внутри метода интерфейса, то всё ок. Не то вы называете "интерфейсом". archeliteВсе используемые классы и методы паблик и находятся в одном пакете. Это не имеет никакого значения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2016, 11:06 |
|
||
|
Вопрос по инициализации полей
|
|||
|---|---|---|---|
|
#18+
archelite, Ну создали Вы локальную для метода main переменную с . Инициализировали поля. А дальше? Какой класс или объект знает об этой переменной с ? Откуда взялась переменная calculations, ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2016, 11:52 |
|
||
|
Вопрос по инициализации полей
|
|||
|---|---|---|---|
|
#18+
BlazkowiczarcheliteПроблема в том что возникает NullPointer в указанной строке хотя инициализация явно происходит до обращения к массиву. Проблема в том что вы не используете отладчик, чтобы посмотреть какия из трех ссылок null и по шагам пройти весь процесс инициализации. archeliteРаньше обращение было в конструкторе, я думал что проблема была в том что конструктор инициализируется раньше чем вызывается метод в main'e вынес цикл в отдельный метод, но ошибка все равно осталась. Вы не "думали", а "предполагали". Метод научного тыка, проб и ошибок. archeliteЕсли инициализировать массив внутри метода интерфейса, то всё ок. Не то вы называете "интерфейсом". archeliteВсе используемые классы и методы паблик и находятся в одном пакете. Это не имеет никакого значения. Подскажите пожалуйста есть где - нибудь инструкция для чайников по отладчикам основных IDE(Net Beans, IDEA, Eclipse)? Проблему нашел, я просто в классе интерфейса создал другую ссылку, а нужно было обращаться к той же самой, но тогда возникает необходимость делать её статической, это не есть хорошо. Как в нормальных приложениях организуется доступ к полям между классами? Геттеры и сеттеры? А еще есть способы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2016, 12:46 |
|
||
|
Вопрос по инициализации полей
|
|||
|---|---|---|---|
|
#18+
archeliteнибудь инструкция для чайников по отладчикам основных IDE(Net Beans, IDEA, Eclipse)? - определяемся в одной IDE а не всех сразу - делаем проект - задаём конкретный вопрос: "Как поставить точку останова..." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2016, 12:49 |
|
||
|
Вопрос по инициализации полей
|
|||
|---|---|---|---|
|
#18+
archeliteА еще есть способы? "Слона будем есть по частям" - любимая поговорка программистов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2016, 12:50 |
|
||
|
Вопрос по инициализации полей
|
|||
|---|---|---|---|
|
#18+
Среда NetBeans, точки останова ставить умею, пошагово идти тоже, нужно идти так чтобы он не лез в кишки(в реализацию классов) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2016, 13:09 |
|
||
|
Вопрос по инициализации полей
|
|||
|---|---|---|---|
|
#18+
archeliteПодскажите пожалуйста есть где - нибудь инструкция для чайников по отладчикам основных IDE(Net Beans, IDEA, Eclipse)? Проблему нашел, я просто в классе интерфейса создал другую ссылку, а нужно было обращаться к той же самой, но тогда возникает необходимость делать её статической, это не есть хорошо. Как в нормальных приложениях организуется доступ к полям между классами? Геттеры и сеттеры? А еще есть способы? У вас два основных пробела в понимании 1) Отладка - можно найти на ютубе для любой среды 2) Java ООП - вы не понимаете ссылок, объектов и тому подобного, отсюда и ошибка. Тут можно почитать или официальный учебник или любой другой доступный для вас. Не нужно называть "интерфейсом" ваш GUI класс. Интерфейс это то что объявлено с ключеным словом interface. А GUI это "графически интерфейс" либо "пользовательский интерфей" Ну, и если вы не моежете отличить ссылку, от объекта, то это первое чему стоит уделит внимание. Есть переменная. Она ссылается на объект. Либо не ссылается, и тогда ее значение null. А про "ссылки" и "указатели" лучше пока не вспоминать, это не C++ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2016, 13:11 |
|
||
|
Вопрос по инициализации полей
|
|||
|---|---|---|---|
|
#18+
archeliteСреда NetBeans, точки останова ставить умею, пошагово идти тоже, нужно идти так чтобы он не лез в кишки(в реализацию классов) https://www.google.com?q=NetBeans debug step into ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2016, 13:12 |
|
||
|
Вопрос по инициализации полей
|
|||
|---|---|---|---|
|
#18+
вроде разобрался немного есть еще гавнокод) https://github.com/Archelite/minesweeper/blob/master/StartGame.java https://github.com/Archelite/minesweeper/blob/master/Interface.java https://github.com/Archelite/minesweeper/blob/master/Calculations.java https://github.com/Archelite/minesweeper/blob/master/Timer.java Это вроде как сапер на Java, он даже работает только очень корявый получился, сделан на основе чьих - то исходников Задача в том чтобы сделать код более правильным и читаемым, более расширяемым и универсальным. Готов выслушать ваши предложения) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2016, 13:21 |
|
||
|
Вопрос по инициализации полей
|
|||
|---|---|---|---|
|
#18+
archelite https://github.com/Archelite/minesweeper/blob/master/Interface.java Хм. Это же ключевое слово. Не знал что можно так класс назвать. archeliteЗадача в том чтобы сделать код более правильным и читаемым, более расширяемым и универсальным. Code Review по-нашему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2016, 13:23 |
|
||
|
Вопрос по инициализации полей
|
|||
|---|---|---|---|
|
#18+
archelite, public JButton[][] blocks; это плохой подход, в принципе, для игр. Swing для них не предназначен. Намного быстре с точки зрения производительности и будущих изменений, самостоятельно отрисовавать канвас на Java2D, а еще лучше JavaFX Много не понятных идентификаторов либо слишком общих. Не экономьте на длине имен переменных. Методы лучше называть глаголами. Реализация таймера ошибочна. Про метод Thread.sleep() стоит забыть вообще. Вот это за гранью добра и зла. Код: java 1. 2. 3. 4. Когда вам нужно поговорить с кем-то, вы берете список жителей вашего населенного пункта, и обходите всех по очереди, спрашивая, а не тот ли он человек, которого вы ищете. Вместо того чтобы взять его номер телефона и позвонить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2016, 13:34 |
|
||
|
Вопрос по инициализации полей
|
|||
|---|---|---|---|
|
#18+
авторХм. Это же ключевое слово. Ключевое с маленькой буквы авторотрисовавать канвас на Java2D, а еще лучше JavaFX Судя по описанию классная штука, перепишу) авторРеализация таймера ошибочна. Про метод Thread.sleep() стоит забыть вообще. Почему? он же не Deprecated, как сделать по другому? авторВот это за гранью добра и зла. Да, лучше как-то сделать некий ID для каждой кнопки и по нему обращаться, а не каждый раз делать обход всего поля при каждом событии, но сани как говорится не мои) Сейчас думал над тем как запихнуть ID к Swing'овской кнопке, но по видимому от Swing'a вообще придется отказаться) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2016, 13:56 |
|
||
|
Вопрос по инициализации полей
|
|||
|---|---|---|---|
|
#18+
archeliteПочему? он же не Deprecated, как сделать по другому? Он делает то что он должен делать. Но вам эта функциональность нигде не нужна. В вашем случае, например, фактически каждый тик занимает больше секунды. По-моему даже намного больше. На много лучше в вашем случае было бы взять javax.swing.Timer Альтернативы ему java.util.Timer и ScheduledExecutorService. Но нужно самому синхронизировать с EDT, как вы это уже делаете. А еще они могут не синхронизироваться с локальными часами и какой нибудь sleep mode может сломать их нафиг. Так что вопрос, в целом, не так прост как кажется. Даже в оригинальном майнкрафте долгое время были баги с таймером. archeliteДа, лучше как-то сделать некий ID для каждой кнопки и по нему обращаться, а не каждый раз делать обход всего поля при каждом событии, но сани как говорится не мои) Сейчас думал над тем как запихнуть ID к Swing'овской кнопке, но по видимому от Swing'a вообще придется отказаться) MouseEvent.getComponent() ссылку на нужную кнопку не возвращает? Обычно, в UI сообытиях есть что-то вроде source - ссылка на контрол, от которого оно пришло. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2016, 14:07 |
|
||
|
Вопрос по инициализации полей
|
|||
|---|---|---|---|
|
#18+
таймеры посмотрю авторMouseEvent.getComponent() ссылку на нужную кнопку не возвращает? Обычно, в UI сообытиях есть что-то вроде source - ссылка на контрол, от которого оно пришло. возвращает компонент, который можно привести к нужному виду, посижу разберусь, сейчас внезапно озадачили, вечером загляну еще ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2016, 14:59 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39268797&tid=2123918]: |
0ms |
get settings: |
6ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
58ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 208ms |
| total: | 353ms |

| 0 / 0 |
