-4

フライトの座席番号をパラメーターとして受け取り、その座席が利用可能かどうかを示すブール値を返す isAvailable というブール値メソッドを作成しようとしています。三目並べプログラムに似たコードを使用すると、コードは 20 のような座席番号を 2 次元配列の行と列のインデックスに変換します。フライトに空席がある場合は true を返します。

    public class Flight {

     /*
     * declare instance variables
     * each flight object that is created will have its own copy of these
     * These are declared as private to ensure that external Java code
     * cannot access them directly and assign any arbitrary values to them.
     */
     String flightNumber;
     int rows;
     int seatsPerRow;
     boolean [][] seat;
     double fare;
     String origin;
     String destination;


     /*
     * The constructor
     * Contains code that initially sets up each flight object when it is
     * first created. Always has the same name as the class.
     */
     public Flight (String flightNumber, int rows, int seatsPerRow, double fare,  String origin, String destination) {

    //call the mutator methods and let them initialize the instance variables
    setflightNumber(flightNumber);
    setRows(rows);
    setSeatsPerRow(seatsPerRow);
    setFare(fare);
    setOrigin(origin);
    setDestination(destination);

    seat = new boolean [rows][seatsPerRow]

    for(int i = rows, int x = seatsPerRow; i>0, x>0; i--, x--){
        seat[i][x] = true;
    }
     }//end of constructor


         /*
         * The accessor methods
     * These report the current values of the Flight object's instance variables
     */
     public String getFlightNumber() {
         return flightNumber;
     }

     public int getRows() {
         return rows;
     }

     public int getSeatsPerRow() {
         return seatPerRow;
     }

     public double getFare() {
         return fare;
     }

     public String getOrigin() {
         return origin;
     }

     public String getDestination() {
         return destination;
     }

     public boolean isAvailable(int userRow, int userSeatPerRow) {

    int row = 0;
    int seatPerRow = 0;

     }
}//end of accessors
4

2 に答える 2

1

あなたの機能

public boolean isAvailable(int userRow, int userSeatPerRow) {

    int row = 0;
    int seatPerRow = 0;

     }

何も返しません。何を入れたらいいのかわからないからなのか、それとも忘れたのか…?

おそらく、座席を false に設定する「book」メソッドが必要になるでしょう (seat[][] 配列を少し切り替えます)。メソッドはisAvailable配列にアクセスして値を返す必要があります

return seat[userRow][userSeatPerRow].

これらが渡されるパラメーターである場合、メソッドでrowとをゼロに設定すると、当惑します。seatPerRow

于 2013-02-12T03:50:43.313 に答える
1

これはあなたが探しているものですか?

public boolean isAvailable(int userRow, int userSeatPerRow) {
      return !seat[userRow][userSeatPerRow];
} 

seat[x][y]これは、列 x の座席 y が占有されている場合、配列が true であると仮定します

座席が占有されている場合seat[userRow][userSeatPerRow]は ですtrue

の場合、!論理を反転すると、 にtrueなりfalseます。

したがって、関数はfalse座席が占有されていることを返します。席が空いている場合はその逆です。その後、関数は戻りますtrue

最初に利用可能な座席を見つけるには、次のようにします。

 for (int row = 0; row < getRows(); row++) {
     for (int column = 0; column < getSeatsPerRow(); column++) {
         if (isAvailable(row, column)) {
             System.out.println("Sear " + row +", " + column + " is emply!!!!!!");
         }
     } 
 }

空席があるか確認するには

public boolean areThereAnyAvailableSeats() {
    for (int row = 0; row < getRows(); row++) {
        for (int column = 0; column < getSeatsPerRow(); column++) {
            if (!seat[userRow][userSeatPerRow]) {
                return true;
            }
        } 
    }
    return false;
} 
于 2013-02-12T03:52:55.120 に答える