So gibt es eine Klasse Hotel
, die 20 Zimmer in Form einer Matrix 4x5 (4 Etagen, 5 Zimmer auf jeder Etage) enthält. Die Klasse Room
hat die Eigenschaften:Probleme mit variablem Umfang außerhalb der for-Schleife
floorNumber(int),
roomNumber(int),
numberOfBeds(int),
occupation(boolean)
etc.
Für occupation
, true bedeutet beschäftigt und falsche Mittel frei.
Eines der Verfahren I im Hotel zu implementieren ist derjenige, der ein Zimmer
reserve(int floorNumber, int roomNumber)
Diese Methode behält sollten überprüfen, ob Tätigkeit wahr oder falsch ist.
Wenn es wahr ist, dann Reservierung nicht, und wenn es falsch ist, soll ich Beruf auf true gesetzt, mit der Methode
setOccupation(boolean t).
Auch Methode reserve
return boolean (wahr oder falsch), je nachdem, ob Reservierung gelungen oder nicht. In dieser Methode, raten Sie, ist das Problem mit dem Umfang einer Variablen. So gibt es:
public boolean reserve(int floorNumber, int roomNumber){
boolean flag = false;
for (int i = 0; i < 5; i++){
if(rooms[floorNumber][i].getRoomNumber() == roomNumber){//every element in matrix rooms has this property: rooms[floorNumber][some_number_from_1_to_5]
if (rooms[floorNumber][i].getOccupancy() == false){
rooms[floorNumber][i].setOccupancy(true);
flag = true;
}
else
flag = false;
}
}
return flag;
}
Das Problem ist, wenn ich (in erster Linie) Flag auf true gesetzt, Funktion true zurückgibt, und wenn ich Flag auf false gesetzt, Funktion gibt false zurück.
Der Grund, warum ich etwas Wert Flagge in erster Linie zuzuordnen ist, weil Compiler zeigt:
Error: variable flag might not have been initialized
Also, das Problem ist, dass es scheint, wie Methode nie Code mit for-Schleife ausführt.
Ich weiß, dass in Schleife definierte Variablen außerhalb der Schleife nicht existieren, aber die außerhalb definierten Schleifen sollten ihre Werte in Schleife ändern. Wie in dieser Frage hier: Java - Access variable inside and outside of for-loop
Ihr Code wird nicht kompiliert.'boolean flag false;' ist ungültig. Korrigiere diese Anweisung und kompiliere sie erneut. –
Sorry, ich habe queston bearbeitet, es kompiliert jetzt. Ursprünglich heißt es 'boolean flag = false;' – misty
Warum machst du hier sowieso eine Schleife? Es ist ein 4 x 5-Array. Sie kennen die Stockwerk- und Raumnummer (z. B. 2, 3). Holen Sie sich das Zimmer direkt aus dem Zimmer-Array (z. B. Zimmer Zimmer = Zimmer [2] [3]). – KevinO