Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> выдает ошибку при анализе массива 
V
    Опции темы
sound
Дата 12.2.2008, 22:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 28.6.2006

Репутация: нет
Всего: нет



Вот только начал изучать java, как обычно при изучении появляются вопросы... Вот код, часть его, в которой возникает ошибка, если я анализирую массив tmpMas в paint(), то у меня вылетает ошибка (если убрать комментарии), а так все нормально... Вопрос в том, что здесь не так и как лучше исправить.
Заранее спасибо.

Код

import java.io.*;
import java.net.*;
import java.awt.*;
import java.awt.event.*;
import java.applet.*;


public class Example extends Applet{
        private int x = 15, y = 10;
        private char tmpMas[][];
        private int w, h;

        public void init(){
            setBackground(Color.white);
        }

    public void start(){
        char tmpMas[][] = new char[x][y];
            for (int i = 0; i < x; i++){
                        for (int j = 0; j < y; j++){
                            tmpMas[i][j] = '0';
                    }
            }
        int w = x * 20 + 30;
        int h = y * 20 + 95;
        resize(w, h);
        repaint();
    }

    public void paint(Graphics g){
        g.drawString("Example...", 20, 20);

        for (int i = 0; i < x; i++){
            for (int j = 0; j < y; j++){
//                switch(tmpMas[i][j]){
//                    case '0':

                        g.drawRect(15 + (20 * i), 80 + (20 * j), 20, 20);

//                    case '1':
//                        g.fillRect(15 + (20 * i), 80 + (20 * j), 20, 20);
//                }
            }
        }
    }
}



PS. Возможно это относится к разделу апплетов, а не к общим вопросам...

Это сообщение отредактировал(а) sound - 12.2.2008, 22:18
PM MAIL   Вверх
hamsterKSU
Дата 12.2.2008, 22:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 401
Регистрация: 20.10.2006
Где: Украина, Херсон

Репутация: 1
Всего: 11



надо писать какая ошибка и приводить stackTrace
PM MAIL ICQ   Вверх
powerOn
Дата 12.2.2008, 22:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 47
Всего: 159



 Строка № 18 твоего кода
Код

char tmpMas[][] = new char[x][y];


ты здесь перекрываешь видимость переменной - объявляешь новую локальную, хотя у тебя уже объявлена такая же как private.
замени эту строку кода на:

Код

tmpMas = new char[x][y];
 

потом, строки 35-42, наверное лучше изменить следующим образом:
Код
                
                switch (tmpMas[i][j])
                {
                    case '0':
                        g.drawRect(15 + (20 * i), 80 + (20 * j), 20, 20);
                       break;
                    case '1':
                        g.fillRect(15 + (20 * i), 80 + (20 * j), 20, 20);
                        break;
                }




--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
hamsterKSU
Дата 12.2.2008, 22:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 401
Регистрация: 20.10.2006
Где: Украина, Херсон

Репутация: 1
Всего: 11



ну дык все понятно.
тут ты обявил переменную - она указывает в null
Цитата(sound @  12.2.2008,  21:13 Найти цитируемый пост)

Код

private char tmpMas[][];



а тут ты создал локальную переменную с тем же именем smile
Цитата(sound @  12.2.2008,  21:13 Найти цитируемый пост)
  
Код

public void start(){
char tmpMas[][] = new char[x][y];



надо
Код

public void start(){
tmpMas = new char[x][y];



P.S. за модератором не успеешь smile


Это сообщение отредактировал(а) hamsterKSU - 12.2.2008, 22:44
PM MAIL ICQ   Вверх
sound
Дата 12.2.2008, 22:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 28.6.2006

Репутация: нет
Всего: нет



Спасибо, огромное, что-то и внимания не обратил... неопытный, что сказать smile

прописал tmpMas = new char[x][y]; и все пошло поехало,


PS. break; я прописал, просто когда лишний код стирал, и его случайно стер smile

еще раз спасибо.
PM MAIL   Вверх
powerOn
Дата 12.2.2008, 23:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 47
Всего: 159



Если вопрос решён, то не забывай помечать его таковым.  smile 


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0444 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.