java - 更改数组的多个值

标签 java

我正在构建一个预订系统,询问用户登机和目的地点。有六个车站,我想减去上车点、目的地点以及所有中间站的乘客数量。

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/

相关文章:

java - Jsoup 停止解析网页

java - jhipster 示例应用程序 - 如何确保只有资源所有者才能删除它?

java - 使用卡片布局只需一键即可更改 Pane

java - 如何通过硬编码在 web.xml 中使用 jndi 设置?

java - ControlsFx 对话框无法在不同计算机上打开

java - 将 char 转换为 string 时会发生什么? ( java )

java - Maven/Eclipse项目结构

java - 有没有办法排除正则表达式中的单词或语音?

java - 通过 Activity 传递 date.getTime,在目标 Activity 中使用 date.setTime,获取 NullPointerException

Java - 在哪里初始化字段(实例变量)?