Java 在字符串数组中搜索下一个可用的空空间,然后将空间标记为已占用

Java 在字符串数组中搜索下一个可用的空空间,然后将空间标记为已占用,java,arrays,Java,Arrays,我有一个用于显示座位计划的2d字符串数组 String seating[][] = {{"XX", "02", "03","04","XX","06","07","08","09"}, {"10", "11", "12","13","XX","15","16","17","18"}, {"19", "20", "21","22","23","24","25","26","27"}}; 我要做的是在数组中搜索一个

我有一个用于显示座位计划的2d字符串数组

String seating[][] = {{"XX", "02", "03","04","XX","06","07","08","09"},
                     {"10", "11", "12","13","XX","15","16","17","18"},
                     {"19", "20", "21","22","23","24","25","26","27"}};
我要做的是在数组中搜索一个可用空间,该空间尚未标记为“XX”,然后将“XX”分配给该空间,以显示已占用的空间。
我知道可以使用嵌套的for循环来搜索数组和数组中的display元素,但是,我很难理解如何插入一个新元素来将该点标记为已执行。我是一名编程新手,因此非常感谢您的帮助。谢谢。

请注意,您并不是在这里向二维数组添加值,(数组的长度是固定的),您只是在设置二维数组元素的值

如您所知,这就是如何在二维阵列中循环:

for (int i = 0 ; i < seating.length ; i++) {
    for (int j = 0 ; j < seating[i].length ; j++) {

    }
}
如果未被占用,我们将其设置为已占用:

if (!seating[i][j].equals("XX"))
seating[i][j] = "XX";
boolean seatFound = false;
outer: for (int i = 0 ; i < seating.length ; i++) {
    for (int j = 0 ; j < seating[i].length ; j++) {
        if (!seating[i][j].equals("XX")) {
            seating[i][j] = "XX";
            seatFound = true;
            break outer;
        }
    }
}
if (seatFound) {
    // a seat was successfully occupied!
} else {
    // the seats were already all full!
}
找到一个有
中断的座位后,不要忘记停止循环!因为我们想要打破外循环,所以需要用标签标记外循环

完整代码:

outer: for (int i = 0 ; i < seating.length ; i++) {
    for (int j = 0 ; j < seating[i].length ; j++) {
        if (!seating[i][j].equals("XX")) {
            seating[i][j] = "XX";
            break outer;
        }
    }
}
outer:for(int i=0;i
您还可以添加一个布尔变量来检查座椅是否已成功占用:

if (!seating[i][j].equals("XX"))
seating[i][j] = "XX";
boolean seatFound = false;
outer: for (int i = 0 ; i < seating.length ; i++) {
    for (int j = 0 ; j < seating[i].length ; j++) {
        if (!seating[i][j].equals("XX")) {
            seating[i][j] = "XX";
            seatFound = true;
            break outer;
        }
    }
}
if (seatFound) {
    // a seat was successfully occupied!
} else {
    // the seats were already all full!
}
布尔seatFound=false;
外部:用于(int i=0;i
您的预期输出也是如此
“XX”,“XX”,03”…
?一旦找到位置,只需将位置设置为“XX”。您只需替换旧值。如何为1d数组赋值?对于2d数组也是如此,只需添加另一个索引信息(即
座位[…][…]
而不是
座位[…]
)@Sweeper是的,这是我期望的输出,因为我希望程序占据0,0的积分。非常感谢,这是一个很好的解释,帮助我了解了该做什么,以及它是如何工作的,并帮助解决了我的问题。再次感谢。