如果条件arraylist.startsWith工作不正确



有人能告诉我为什么即使String(booking(不是以A开头,我的if语句with.startsWith也是true吗?以及如何修复,如果可能的话。提前感谢!

List<Film> filmList = new ArrayList<>();
filmList.add(new Film("Batman", "2D", "20:15", "Room 1", "Available"));
filmList.add(new Film("Batman Returns", "3D", "22:30", "Room 1", "Available"));
filmList.add(new Film("Batman Returns Again", "3D", "20:15", "Room 2", "Available"));
filmList.add(new Film("Batman Never Dies", "2D", "23:30", "Room 2", "Booked Out"));
//printing movie list
for (Film film : filmList) {
System.out.println(film.name + " | " + film.quality + " | " + film.time + " | " + film.room + " | " + film.booking);
}
//picking movie
System.out.println();
System.out.println("Choose a movie that you want to see!");
String filmPick = scan.next().toLowerCase(Locale.ROOT);
Film pickedfilm = null;
for (Film film : filmList) {
if (film.name.equalsIgnoreCase(filmPick) && film.booking.toLowerCase().startsWith("a")) {
pickedfilm = film;
System.out.println("Your booking was successfully");
} else {
System.out.println("No movie found!");
}
break;
}

//类

class Film {
public String name;
public String quality;
public String time;
public String room;
public String booking;
public Film(String name, String quali, String time, String room, String booking) {
this.name = name;
this.quality = quali;
this.time = time;
this.room = room;
this.booking = booking;
}

您应该阅读nextLine。next((方法从该扫描程序中查找并返回下一个完整的令牌。完整的标记前面和后面都是与分隔符模式匹配的输入。

每当您添加";"蝙蝠侠不死";,它读作";"蝙蝠侠";,你的for循环会得出这样的结论。

更换此线路

String filmPick = scan.next().toLowerCase(Locale.ROOT);

用这个:-

String filmPick = scan.nextLine().toLowerCase(Locale.ROOT);

最新更新