簡體   English   中英

布爾多維數組與嵌套for循環一起使用-使其停止

[英]Boolean multidimensional arrays working with nested for loops - making it stop

我有點被困在這里。

總的來說,我對Java / Programming比較陌生。 我想制作一個在4x4網格中“預訂座位”的程序。 此多維數組將為boolean類型,因此,如果不使用座位,則返回false,但是如果使用座位,則返回true。 我希望能夠指定不同的座位,所以像前兩排將是與后兩排不同的部分。 現在,我有一個方法,但是只要我調用該方法,它就只會記錄整個前兩行(從邏輯上講應該是)。 但是我只希望一次只能預定一個座位,這樣一預定一個座位就可以結束for loop。 如果我選擇要預訂另一個座位,它將移動到這些行或列中的下一個可用座位。

這是到目前為止的代碼:

import javax.swing.JOptionPane;

public class Seats{
int maxRows = 4;
int maxCols = 4;
boolean seating[][] = new boolean[maxRows][maxCols];

String bookSeat = null;

public static void main(String []args){
    Seats seats = new Seats();
    seats.start();

}

public void start(){
    bookSeat = JOptionPane.showInputDialog(null, "Book a seat? (y/n)");
    if(bookSeat.equals("y")){
        bookSeat();
    }else{
        JOptionPane.showMessageDialog(null, "Okay.");       
    }
    displaySeats(seating);
}

private boolean bookSeat(){
    boolean isBooked = false;
    for(int row = 0; row <2; row++){
        for(int col = 0;col<maxCols;col++){
            if (seating[row][col] == false){
                seating[row][col] = true;
                isBooked = true;
            }
        }
    }
    return isBooked;

}

private void displaySeats(boolean[][] anArray){

    String seatTaken;
    int r=0;
    int c=0;
    for(int display=0; display<1; display++){
        for(r=0;r<anArray.length;r++){
            for(c=0;c<anArray.length;c++){
                if (seating[r][c]==false){
                    seatTaken = "O";
                }
                else{
                    seatTaken = "X";
                }
            System.out.print("\t[" + seatTaken + "] \t");

            }
            System.out.println("");

        }
    }       
  }
}
private boolean bookSeat(){
    boolean isBooked = false;
    for(int row = 0; row <2; row++){
        for(int col = 0;col<maxCols;col++){
            if (seating[row][col] == false){
                seating[row][col] = true;
                return true;
            }
        }
    }
    return false;
}

我認為您想要做的是找到空位並預訂后就返回-如上面的方法所示。 這樣,一旦您預訂了座位,循環就不會繼續。

假設您要在找到席位后立即退出此方法。

private boolean bookSeat()
{
  for(int row = 0; row <2; row++)
  {
    for(int col = 0;col<maxCols;col++)
    {
        if (seating[row][col] == false)
        {
            seating[row][col] = true;
            return true;
        }
    }
  }
  return false;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM