Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Java
Перезагрузить страницу Ошибка в коде как исправить
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Anonymous
Guest
 
Сообщений: n/a
По умолчанию Ошибка в коде как исправить - 07.09.2003, 17:08

ЛЮДИ! Пожалуйста помогите найти ошибку в коде.


import java.util.*;

public class TestVector
{

public static void main(String[] s)
{
Object sb = new Classmates();

Vector classmates = new Vector();
Enumeration clmt = new Classmates();
while(clmt.hasMoreElements())
{

classmates.addElement(clmt.nextElement());


}
for (int i = 0; i <= 8; i++)
{

sb = classmates.elementAt(i);
System.out.println(sb.toString());

}
}
}

class Classmates implements Enumeration
{
public int id;
public String FIO;

Classmates()
{}

Classmates (int n, String FIO)
{
this.id = n;
this.FIO = FIO;
}


Object a1 = new Classmates(1, "Aladircev");
Object a2 = new Classmates(2, "Bajan");
Object a3 = new Classmates(3, "Abakumenko");
Object a4 = new Classmates(4, "Dogonashev");
Object a5 = new Classmates(5, "Ivleva");
Object a6 = new Classmates(6, "Kaploon");
Object a7 = new Classmates(7, "Tsvetkova");
Object a8 = new Classmates(8, "Miroshnichenko");
Object a9 = new Classmates(9, "Emelianova");




boolean hasMore = true;
private int counter = 0;


public boolean hasMoreElements()
{
return hasMore;
}

private Object a[] = {a1, a2, a3, a4, a5, a6, a7, a8, a9};

public Object nextElement()
{
counter++;
if (counter >= 9)
hasMore = false;
return a[counter - 1] ;

}
public String toString()
{
return "Number" + id + " is " + FIO;
}
}



Вроде компилируется без ошибок. Однако при запуске на экране консоли выводится какая-то лажа типа



at Classmates.<init>(TestVector.java:39)
at Classmates.<init>(TestVector.java:39)
at Classmates.<init>(TestVector.java:39)
at Classmates.<init>(TestVector.java:39)
at Classmates.<init>(TestVector.java:39)
at Classmates.<init>(TestVector.java:39)
at Classmates.<init>(TestVector.java:39)
at Classmates.<init>(TestVector.java:39)
at Classmates.<init>(TestVector.java:39)
at Classmates.<init>(TestVector.java:39)
at Classmates.<init>(TestVector.java:39)
* * *
at Classmates.<init>(TestVector.java:39)



ПОЖАЛУЙСТА!!! Подскажите где косяк.
P.S. Пробовал несколько менять код (От удаления цикла for... до обработки исключений). При Этом менялась только последняя цифра при запуске программы:
at Classmates.<init>(TestVector.java: X )
Ответить с цитированием
  (#2 (permalink)) Старый
rew rew вне форума
Member
 
Сообщений: 48
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 12.08.2003
По умолчанию эх ты, билли билли :) - 08.09.2003, 04:09

Цитата:
at Classmates.<init>(TestVector.java:39)
говорит что произошло какое то исключение в строке 39 в твоем TestVector.java сорсе. а вот что за исключение ты так и не написал
Ответить с цитированием
  (#3 (permalink)) Старый
Anonymous
Guest
 
Сообщений: n/a
По умолчанию 08.09.2003, 11:00

А чё за исключение - не видно, т.к. сообщения
at Classmates.<init>(TestVector.java:39)
заполняют весь экран консоли (даже в Win2000).
Ответить с цитированием
  (#4 (permalink)) Старый
rew rew вне форума
Member
 
Сообщений: 48
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 12.08.2003
По умолчанию 08.09.2003, 12:05

так а что редактор какой нить не используешь? какая строка соответствует 39й в твоем сорсе?
Ответить с цитированием
  (#5 (permalink)) Старый
rew rew вне форума
Member
 
Сообщений: 48
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 12.08.2003
По умолчанию 08.09.2003, 12:08

угу значит, выбрасывает стак оверфлоу, у тя там наверно какая то бесконечная рекурсия, сча гляну
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
rew rew вне форума
Member
 
Сообщений: 48
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 12.08.2003
По умолчанию 08.09.2003, 12:12

так и есть
Код:
class Classmates implements Enumeration{

    public int id;
    public String FIO;
    Classmates(){
    }
    Classmates(int n,String FIO){
  this.id=n;
  this.FIO=FIO;
    }
    Object a1=new Classmates(1,"Aladircev"); тут ты или сделай обьекты статическими или хрень какая то, получается что ты рекурсивно вызываешь конструктор
Ответить с цитированием
  (#7 (permalink)) Старый
Anonymous
Guest
 
Сообщений: n/a
По умолчанию 08.09.2003, 12:47

Спасибо! Сделал объекты статическими, после этого васе пошло как надо. А теперь не мог бы ты мине объяснить почему при работе с нестатическими объектами перли исключения? (please)
Ответить с цитированием
  (#8 (permalink)) Старый
rew rew вне форума
Member
 
Сообщений: 48
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 12.08.2003
По умолчанию 08.09.2003, 13:09

по тому что Object a1=new Classmates(1,"Aladircev"); обьект класса и даже если ты его инициализируешь за пределами конструктора, то он все равно инициализируется в конструкторе, те реально твой код выполняется в примерно следущей последовательности
Код:
class Classmates implements Enumeration{ 
   public int id; 
   public String FIO; 

Classmates(){
   Object a1 = new Classmates(1, "Aladircev"); 
   Object a2 = new Classmates(2, "Bajan"); 
   Object a3 = new Classmates(3, "Abakumenko"); 
   Object a4 = new Classmates(4, "Dogonashev"); 
   Object a5 = new Classmates(5, "Ivleva"); 
   Object a6 = new Classmates(6, "Kaploon"); 
   Object a7 = new Classmates(7, "Tsvetkova"); 
   Object a8 = new Classmates(8, "Miroshnichenko"); 
   Object a9 = new Classmates(9, "Emelianova"); 
   boolean hasMore = true; 
   private int counter = 0; 
} 
Classmates (int n, String FIO){ 
   Object a1 = new Classmates(1, "Aladircev"); // вот тут и получается рекурсивный вызов конструктора
   Object a2 = new Classmates(2, "Bajan"); 
   Object a3 = new Classmates(3, "Abakumenko"); 
   Object a4 = new Classmates(4, "Dogonashev"); 
   Object a5 = new Classmates(5, "Ivleva"); 
   Object a6 = new Classmates(6, "Kaploon"); 
   Object a7 = new Classmates(7, "Tsvetkova"); 
   Object a8 = new Classmates(8, "Miroshnichenko"); 
   Object a9 = new Classmates(9, "Emelianova"); 
   boolean hasMore = true; 
   private int counter = 0; 
   this.id = n; 
   this.FIO = FIO; 
} 
...
а статиские поля инициализируются один раз при загрузке класса
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как исправить ошибки в коде Lisska C++ Builder 1 08.06.2011 17:07
Исправить ошибку в коде с++ Garet Вопросы начинающих программистов 0 20.05.2011 20:40
Исправить ошибку в коде с++ Garet Вопросы начинающих программистов 0 20.05.2011 16:49
Как исправить ошибки в коде denis120 DHTML, JavaScript, VBScript 0 20.05.2011 14:39
Как исправить ошибку в коде imported_Pikachu Haskell 2 18.05.2011 22:45
Как исправить ошибку в коде gromozeka Python 3 17.03.2010 19:08
Как исправить ошибки в коде Ghostep DHTML, JavaScript, VBScript 2 15.12.2005 19:25
Как исправить ошибки в коде antpu238 С/С++ 6 07.09.2005 15:23
Как исправить ошибки в написанном коде imported_Flint XML & WML 8 27.07.2005 11:41
Как узнать что ошибка программы или же ошибка в программном коде Vasis Delphi 0 01.07.2004 16:09
Как исправить ошибки в коде Anonymous DHTML, JavaScript, VBScript 1 10.10.2003 20:41
Как исправить ошибки в коде Anonymous С/С++ 1 31.01.2003 20:11



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов