[英]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.