Мне нужно использовать переменную из одного метода в другом. Вот код:
public static void secondMain() {
BufferedReader reader;
var lines = new ArrayList<String>();
var rooms = new ArrayList<Room>();
try {
reader = new BufferedReader(new FileReader("rooms.txt"));
String line = reader.readLine();
lines.add(line);
while (line != null) {
line = reader.readLine();
lines.add(line);
}
reader.close();
for (int i = 0; i < lines.size() - 1; i++){
String[] words = lines.get(i).split(" ");
var room = new Room();
room.roomNum = Integer.parseInt(words[0]);
room.roomType = (words[1]);
room.roomPrice = Double.parseDouble(words[2]);
room.hasBalcony = Boolean.parseBoolean(words[3]);
room.hasLounge = Boolean.parseBoolean(words[4]);
room.eMail = (words[5]);
rooms.add(room);
}
Вот где его нужно использовать:
public static void reserveRoom() {
// TODO Auto-generated method stub
String choice = "";
do {
secondMain();
System.out.println("\n-- ROOM RESERVATION --");
System.out.println("Please enter the room number you wish to reserve");
System.out.println("Q - Quit");
Room selectedRoom = null;
var searchRoomNum = input.nextInt();
for(int i = 0; i < rooms.size(); i++){
if (rooms.get(i).roomNum == searchRoomNum){
selectedRoom = rooms.get(i);
System.out.println("Room Number: " + selectedRoom.roomNum);
System.out.println("Room Type: " + selectedRoom.roomType);
System.out.println("Room Price: " + selectedRoom.roomPrice);
System.out.println("Balcony: " + selectedRoom.hasBalcony);
System.out.println("Lounge: " + selectedRoom.hasLounge);
System.out.println("Email: " + selectedRoom.eMail);
System.out.println("-------------------");
}
}
}
моя текущая ошибка находится в цикле for, где я проверяю условия на массив. "комнаты не могут быть решены".
Вы определяете rooms
в secondMain
, а затем ожидаете, что сможете использовать его в reserveRoom
, никогда не передавая его.
где вы вызываете функцию reserveRoom()
?
@M.Abdel-Ghani М.Абдель-Гани, функция backupRoom() вызывается в моем основном методе.
Вы можете вернуть List<Room> из secondMain() и сохранить его в List<Room> в методе backupRoom(), это было бы проще и читабельнее.
Вместо public static void secondMain
можно сделать public static ArrayList<Room> secondMain
В конце второго Главного: return rooms
.
В методе reserveRoom
: при вызове метода secondMain: ArrayList<Room> rooms = secondMain();
Теперь вы сможете использовать метод rooms
внутри reserveRoom
.
Если вы хотите получить доступ к rooms
из метода secondMain()
в reserveRoom()
, вы должны вернуть его из secondMain()
при выполнении вызова. Это можно сделать, изменив тип возвращаемого значения метода
public static void secondMain()
стать public static ArrayList<Room> secondMain()
Затем после цикла for в secondMain()
, когда вы закончили добавлять все комнаты в список массивов, вы должны вернуть rooms
вызывающей стороне. Это можно добавить как один оператор после вашего блока try catch.
return rooms;
Таким образом, вы можете получить доступ к этому свойству из reserveRoom()
. Линия, по которой осуществляется вызов
do {
secondMain();
должно стать:
do{
var rooms = secondMain();
Это должно позволить вам получить доступ к комнатам в reserveRoom()
Вы забыли задать вопрос.