目前我的代码只给出了第一个匹配结果。用户输入所需的房价,此时只显示第一个匹配项。如果用户向控制台输入“60”,则应显示3个结果。我想在打印到控制台后需要另一个forloop和if语句,但不确定如何执行
public static void secondMain() {
BufferedReader reader;
var lines = new ArrayList<String>();
var rooms = new ArrayList<Room>();
Room selectedRoom = null;
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);
}
var searchRoomPrice = input.nextDouble();
for (int i = 0; i < rooms.size(); i++) {
if (rooms.get(i).roomPrice == searchRoomPrice) {
selectedRoom = rooms.get(i);
break;
}
}
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("-------------------");
} catch (Exception e) {
e.printStackTrace();
}
}
任何其他需要的信息请随时询问
2条答案
按热度按时间8fq7wneg1#
我注意到两件事:
您正在使用
break;
在这里:所以你在第一场比赛后就停止了循环。
在这里:
有理由用-1吗?
wydwbb8l2#
如果您只想打印信息,请将打印命令移到循环内并删除中断,即。
您还可以使用第一个循环保存列表中的所有对象,然后在第二个循环中迭代列表并打印信息,即。