配列の複数の値を変更します

Wolfizzy:

私は、私が搭乗し、目的地のポイントをユーザーに尋ねる予約システムを構築しています。そこ6局である、と私は搭乗と宛先ポイントとこれらの間のステーションのすべてからの乗客数を減算します。

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の」で、宛先ポイントは「イプサム」である場合、私はファーストクラスの席を予約するためのコード、コード「Loremの」と「イプサム」のためにのみ変更可能な座席を実行します。

私は「Loremの」と、転送先のポイントである「シット」として搭乗ポイントを選択した場合、出力は次のようになります。 Index -2 out of bounds for length 5.

問題2:私は5人の乗客を持っており、「Loremのは、」搭乗ポイントであり、「AMETは」先のポイントであるならば、私は「AMET」に「Loremの」から43人の乗客に削減することが可能な座席をしたいです。

私はこれをどのように実現するのですか?ご協力ありがとうございました!

シュテフィ:

問題1の場合は、全体のコードを投稿してください。

問題2:

それだけで考えさせられるインパルスです。

私はこのようにそれを作るでしょう。

        System.out.println(Arrays.toString(numOfFirstClassSeats));        
        for(int i=0; i<numOfFirstClassSeats.length; i++){
            if((destinationPoint >= i)&(boardingPointNum <= i)){
                numOfFirstClassSeats[i] = numOfFirstClassSeats[i]-1;
            }
        }        
        System.out.println(Arrays.toString(numOfFirstClassSeats));

しかし、あなたはの場合は、いくつかのセキュリティを追加する必要があります。あなたが唯一の駅に行く場合boardingPointNum = destinationPoint

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=344064&siteId=1