Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.01.2012, 15:29   #1
NickolayNest
Пользователь
 
Регистрация: 16.10.2011
Сообщений: 40
Вопрос вопросы начинающего

1.Почему метод main не видит статическую переменную из другого класса?



2. И что это за ошибка?:
Код:
non-static variable i cannot be referenced from a static context

Последний раз редактировалось NickolayNest; 16.01.2012 в 16:29.
NickolayNest вне форума Ответить с цитированием
Старый 17.01.2012, 00:16   #2
_Денис
Пользователь
 
Аватар для _Денис
 
Регистрация: 12.11.2009
Сообщений: 20
По умолчанию

Код покажите
Я бы изменил мир, но исходников нету
_Денис вне форума Ответить с цитированием
Старый 17.01.2012, 20:16   #3
NickolayNest
Пользователь
 
Регистрация: 16.10.2011
Сообщений: 40
По умолчанию

например, вот один класс, где определена статическая переменная count:
Код:
public class Dog {
        private   int age;
        private   String name;
        public static int count = 0;
                      
        //конструктор 1  
        public Dog(){
            count++;
        }
        //конструктор 2
        public Dog(String n, int a){
            this.name = n;
            this.age = a;
            count++;
        }
которую использую для подсчета созданных объектов-собак.
Решил разделить код так, чтобы метод main был в отдельном классе, но в том же пакете:
Код:
public class Main {
     public static void main(String[] args) {

        Dog dog2 = new Dog("Песик", 3);

        System.out.println("количество созданных собак = "+count);
        
     }
}
А, дошло, пока писал, понял свою ошибку!
к статич. переменным доступ 2-мя способами:
1. объект.переменная
2. класс.переменная (лучший вариант)
после того, как
Цитата:
System.out.println("количество созданных собак = "+count);
поменял на
Цитата:
System.out.println("количество созданных собак = "+Dog.count);
все стало на свои места!
NickolayNest вне форума Ответить с цитированием
Старый 30.01.2012, 00:40   #4
NickolayNest
Пользователь
 
Регистрация: 16.10.2011
Сообщений: 40
По умолчанию как исправить ошибку?

проблема с методом StringTokenizer.почему в результате выполнения основного метода возникает исключение? :
Код:
Exception in thread "main" java.lang.NullPointerException
	at java.util.StringTokenizer.<init>(StringTokenizer.java:182)
	at java.util.StringTokenizer.<init>(StringTokenizer.java:204)
	at lab4.Core.scan3(Core.java:44)
	at lab4.Core.main(Core.java:61)
Java Result: 1
Код:
public class Doll extends ParentToy{
    private int height;
    public void setHeight(int height){
        this.height = height;
    }
    public int getHeight(){
        return height;
    }
    public Doll(String name, int price, int fromage, int toage){
        super(name, price, fromage, toage);
        
    }
    @Override
    public String toString(){
        StringBuilder sb = new StringBuilder();
        sb.append(String.valueOf(this.name+";"+this.height+
                ";"+this.price+";"+this.fromage+";"+this.toage+";"));
        return sb.toString();
    }
другой класс:
Код:
public class Core {
    public static final String FILE_PATH = "c:/test.txt";

    public String readFromFile(File file){
        try {
            BufferedReader in = new BufferedReader(new FileReader(file));
            String line = null;
            while ((line = in.readLine())!=null){
                System.out.println(line);
            }
            in.close();
            return line;//по идее должна возвращаться строка из файла
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        return null;
    }
    public void writeToFile(ParentToy toy, File file) throws IOException{
        Writer output = new BufferedWriter(new FileWriter(file));
        output.write(toy.toString());
        output.close();
    }

    public void scan3(String line){
        StringTokenizer str = new StringTokenizer(line, ";");
        while(str.hasMoreTokens()){
            String name = str.nextToken();
            int feature = Integer.parseInt(str.nextToken());
            int price = Integer.parseInt(str.nextToken());
            int min_age = Integer.parseInt(str.nextToken());
            int max_age = Integer.parseInt(str.nextToken());
            System.out.println(name+" "+feature+" "+price+" "+min_age+" "+max_age);
        }
    }
    public static void main(String[] args) throws IOException {
        File file = new File(FILE_PATH);
        Core core = new Core();
        Doll dol = new Doll("DOLLY", 200, 4, 8);
        dol.setHeight(30);
        core.writeToFile(dol, file);
        //core.readFromFile(file);
       core.scan3(core.readFromFile(file));// problem is here
    }
}
NickolayNest вне форума Ответить с цитированием
Старый 17.04.2012, 21:40   #5
Dmios
Новичок
Джуниор
 
Регистрация: 17.04.2012
Сообщений: 4
По умолчанию

После выполнения этого кода

Код:
String line = null;
while ((line = in.readLine())!=null){
      System.out.println(line);
}
in.close();
return line;
line в любом случае будет равно null, поэтому возникает NullPointerException.

Код:
StringBuilder builder = new StringBuilder();
String line = null;
while ((line = in.readLine())!=null){
      System.out.println(line);
      builder.append(line);
}
in.close();
return builder.toString();
Dmios вне форума Ответить с цитированием
Старый 15.07.2012, 22:47   #6
lalilulelo
Пользователь
 
Регистрация: 10.12.2007
Сообщений: 23
По умолчанию

Здравствуйте. Вот начал изучать свинги и у меня сразу возник вопрос, на который не могу найти ответ, только догадки. В случаи с АВТ мне понятно что для прорисовки компонентов используются стандартные высокоуровневые библиотеки операционной системы. В случаи с Свингами я так понимаю используется эта высокоуровневая библиотека только 1 раз для отображения материнского окна приложения, а все остальные компоненты рисуемые в окне, прорисовываются низкоуровневыми библиотеками ОС и ОС незнает по определению, что там в окне - кнопка или поле.

Поправьте меня если я не прав.
lalilulelo вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос начинающего CarmaC Общие вопросы по Java, Java SE, Kotlin 1 03.12.2011 08:50
c# для начинающего PROkaZZZniK C# (си шарп) 0 13.11.2011 20:00
Вопрос от начинающего ProGus Microsoft Office Excel 1 10.08.2010 14:30
Инструментарий начинающего... Всеслав Общие вопросы C/C++ 6 24.12.2008 15:39