2016-01-11 2 views
0

Я запускаю некоторые строки кодов в CoffeeDregs, чтобы увидеть, работает ли код, и хотя DrJava компилирует код в порядке, он внезапно перестает работать в Dregs на линии «Room room = rooms [i ]». Может ли кто-нибудь сказать мне, почему это происходит, и как я могу попытаться это исправить?Код перестает работать наполовину в CoffeeDregs

Если я пытаюсь запустить код в DrJava, я получаю сообщение об ошибке; java.lang.NullPointerException at Hotel.checkIn (Hotel.java:24)

Но я не знаю, связано ли это с тем, что он предназначен для запуска в Dregs или фактическая ошибка, вызывающая это.

Мой код выглядит следующим образом;

class Hotel{ 
Room[] rooms; 


Hotel() { 

rooms = new Room[10]; 
Guest rob = new Guest("Rob"); 
Guest jing = new Guest("Jing"); 
Guest kevin = new Guest ("Kevin"); 

checkIn(rob); 
checkIn(kevin); 
checkIn(jing); 

} 

void checkIn(Guest guest){ 
System.out.println(rooms.length); 
for (int i=1; i<rooms.length; i++){ 
    Room room = rooms[i]; 
    room.setGuest(guest); 
    return; 
    } 
} 

public static void main(String[] args) { 
    new Hotel(); 
} 
} 


class Guest{ 
String guestName; 

Guest(String n) { 
this.guestName = n; 
} 

} 


class Room{ 
Guest guest = null; 

public Guest getGuest(){ 
return guest; 
} 
    public void setGuest(Guest guest){ 
this.guest = guest; 
} 
} 
+0

Пожалуйста, разместите сообщение об ошибке или предупреждения о трассировке стека, чтобы лучше помочь. – Phani

+0

Привет, я редактировал ошибку, которую я получаю при работе в DrJava. Я не знаю, что вы подразумеваете под трассировкой стека, извините. – Rob

+0

Эй, Роб, это не имеет ничего общего с CoffeeDregs. Это связано с списком комнат. Вы написали комнаты = новый номер [10] ;, который фактически не делает никаких комнат, он просто освобождает место на 10 номеров. В номерах еще нет. Поэтому, когда вы получаете доступ к комнате [i], вы получаете сообщение об ошибке, потому что нет места. Я могу помочь вам в этом, но мне нужно знать, что вы пытаетесь сделать. Похоже, вы пытаетесь проверить всех 3 гостей во всех 10 номерах. Это верно? Если вам нужна какая-то серьезная помощь в течение крайнего срока, оставьте свою контактную информацию в своем профиле. Я голландский. –

ответ

1

Мне пришлось фактически создавать комнаты по-прежнему. Сделано через

for (int i=0; i<rooms.length;i++){ 
rooms[i] = new Room(); 
} 
Смежные вопросы