我正在构建一个预订系统,询问用户登机和目的地点。有六个车站,我想减去上车点、目的地点以及所有中间站的乘客数量。
TrainService.java
类:
// Prompt user for the boarding point.
System.out.println("\n0. Lorem");
System.out.println("1. Ipsum");
System.out.println("2. Dolor");
System.out.println("3. Sit");
System.out.println("4. Amet\n");
System.out.print("Select a boarding point: ");
String boardingPoint = sc.nextLine();
int boardingPointNum = Integer.parseInt(boardingPoint);
// Prompt user for the destination point.
System.out.println("\n1. Ipsum");
System.out.println("2. Dolor");
System.out.println("3. Sit");
System.out.println("4. Amet");
System.out.println("5. Consectetur\n");
System.out.print("Select a destination point: ");
String destinationPoint = sc.nextLine();
int destinationPointNum = Integer.parseInt(destinationPoint);
// Reduce the number of available seats to the respective stations.
for (int i = 0; i < 5; i++) {
if (boardingPoint.equals("0") && destinationPoint.equals(Integer.toString(i + 1))) {
numOfFirstClassSeats[0 - i] -= numOfFirstClassAdults;
stationList.setNumOfFirstClassSeats(numOfFirstClassSeats);
break;
}
}
...
<小时/>
BookingSystem.java
类:
// Instance variables.
private String[] stations = {"Lorem", "Ipsum", "Dolor", "Sit", "Amet", "Consectetur"};
private int[] numOfFirstClassSeats = {48, 48, 48, 48, 48};
public int[] getNumOfFirstClassSeats() {
return this.numOfFirstClassSeats;
}
public void setNumOfFirstClassSeats(int[] numOfFirstClassSeats) {
this.numOfFirstClassSeats = numOfFirstClassSeats;
}
public void printStations() {
System.out.println("\n~ AVAILABLE SEATS ~");
System.out.println("-------------------\n");
String pattern = "%-20s %-20s %-21s %-23s %-20s\n";
System.out.printf(pattern, "DEPARTING", "ARRIVING", "FIRST CLASS", "STANDARD CLASS", "EXCURSION CLASS");
System.out.println("-------------------------------------------------------------------------------------------------------");
for (int i = 0; i < 5; i++) {
System.out.format(pattern, stations[i], stations[i + 1], getNumOfFirstClassSeats()[i], getNumOfStandardSeats()[i], getNumOfExcursionSeats()[i]);
}
}
问题 1: 当我运行代码预订头等舱座位时,如果登机点为“Lorem”并且目的地点是“Ipsum”。
如果我选择登机点为“Lorem”并且目的地点为“Sit”,则输出为:Index -2 out ofbounds for length 5.
问题 2:如果我有 5 名乘客,“Lorem”是登机点,“Amet”是目的地,我希望“Lorem”的可用座位减少到 43 个乘客到“阿梅特”。
我该如何实现这个目标?感谢您的帮助!
最佳答案
执行此操作的另一种方法可能是考虑使用 map 来绘制不同的登机点和目的地。我不会说这太冗长了,因为组合的数量有限,但它可以解决问题 2。
如果乘客选择了登机点和目的地点,您可以将他们输入的值与 map 进行比较,然后减少该特定组合的乘客数量。
您能否也显示问题 1 的错误日志?这会让我更好地了解问题所在。
关于java - 更改数组的多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60788832/