Java 尝试在二维阵列中查找最近的可用点

Java 尝试在二维阵列中查找最近的可用点,java,Java,我正试图找到最近的座位。但是,我确实尝试了一些东西,但我找不到。经过一些格式化后,我回到了我的明星位置。有什么建议吗 public void nextFree(String seats) { int colA = 0; int rowA = Integer.parseInt(seats.substring(1, 2)); int newColB = 0; int newRowB = 0; if (seats.equ

我正试图找到最近的座位。但是,我确实尝试了一些东西,但我找不到。经过一些格式化后,我回到了我的明星位置。有什么建议吗

public void nextFree(String seats) {
        int colA = 0;
        int rowA = Integer.parseInt(seats.substring(1, 2));
        int newColB = 0;
        int newRowB = 0;

        if (seats.equalsIgnoreCase("a")) {
            colA = 1;
        } else if (seats.equalsIgnoreCase("b")) {
            colA = 2;
        } else if (seats.equalsIgnoreCase("c")) {
            colA = 3;
        } else {
            colA = 4;
        }

        for (int i = 0; i < this.table.length; i++) {
            for (int k = 0; k < this.table.length; k++) {
                if (table[i][k] == "XX") {
                    newRowB = i;
                    newColB = k;
                }
            }
            System.out.print("The seat " + colA + rowA + " is not available! The next availale is " + newColB + newRowB);
        }

    }
public void nextFree(字符串座位){
int=0;
introwa=Integer.parseInt(seats.substring(1,2));
int-newColB=0;
int newRowB=0;
if(席位等信号情况(“a”)){
可乐=1;
}else if(席位等信号情况(“b”)){
可乐=2;
}else if(seats.equalsIgnoreCase(“c”)){
可乐=3;
}否则{
colA=4;
}
for(int i=0;i
您的主要问题是:

for (int i = 0; i < this.table.length; i++) {
  for (int k = 0; k < this.table.length; k++)
for(int i=0;i
看看这两个环如何走相同的距离?这肯定不对。试试这个:

for (int i = 0; i < table.length; i++) {
  for (int k = 0; k < table[i].length; k++)
for(int i=0;i
现在,这将在每一行(
table.length
)上循环,然后在该行的每一列(
table[i].length
)上循环


同样
表[i][k]==“XX”
应该是
表[i][k]。等于(“XX”)
您的主要问题是:

for (int i = 0; i < this.table.length; i++) {
  for (int k = 0; k < this.table.length; k++)
for(int i=0;i
看看这两个环如何走相同的距离?这肯定不对。试试这个:

for (int i = 0; i < table.length; i++) {
  for (int k = 0; k < table[i].length; k++)
for(int i=0;i
现在,这将在每一行(
table.length
)上循环,然后在该行的每一列(
table[i].length
)上循环


另外,
table[i][k]==“XX”
可能应该是
table[i][k]。等于(“XX”)
您尝试从两个字符的字符串确定行


然后,您尝试从一个字符串确定colA。您可能应该在此处使用string.startsWith()。

您尝试从两个字符的字符串确定rowA

然后尝试从一个字符串确定colA。您可能更愿意在此处使用string.startsWith()

证明它对我有效的证据:

证明它对我有效的证据:



我们需要比您提供的内容多一点的上下文,
表[i][k]==“XX”代表什么?那是一个空闲的座位还是你桌子的末端?你怎么知道你桌子上有一个座位是空闲的?你在找什么?在乞讨中,所有的数组都满是“-”如果一个座位被预订了,它会变为“XX”.我有4行9列,每行用a到D的字母表示。我要寻找的是,如果用户输入座位C5,以查找其周围的壁橱。目前,您正在将您的座位设置为与您找到的第一个座位相同的位置,其中有一个“XX”,这意味着它已被占用。您应该查找“-”你还需要做进一步的工作,看看座位离原来的座位有多近,我如何才能找到空闲座位与被占座位的距离?在这里查看这个答案:或者在这里:我们需要比你给出的内容多一点的上下文,表[i][k]=“XX”是什么意思
signify?这是一个空座位还是桌子的末端?你怎么知道桌子上有空座位?你在找什么?在乞讨中,所有的数组都充满“-”,如果一个座位被预订了,它会变为“XX”.我有4行9列,每行用a到D的字母表示。我要寻找的是,如果用户输入座位C5,以查找其周围的壁橱。目前,您正在将您的座位设置为与您找到的第一个座位相同的位置,其中有一个“XX”,这意味着它已被占用。您应该查找“-”你还需要做进一步的工作,看看这个座位离原来的座位有多近。我如何才能找到空闲座位与被占用座位的距离?请在这里查看这个答案:或者在这里:谢谢,但通过这些循环,我可以找到最近的座位吗?@vkaleri-这当然是可能的。继续解决这个问题,直到你找到为止对。使用调试器对你来说可能很有见地。谢谢你,但是通过这些循环,我可以找到最近的一个吗?@vkaleri-这当然是可能的。继续解决这个问题,直到你把它弄对。使用调试器可能对你很有见地。非常感谢你,我可以从这里开始做这件事!我是不是还有一个问题如果最近的座位在上面,它能找到最近的座位吗?它会在网格中搜索最近的座位,所以它可能在旁边、上面或下面。结果是我的计算错了,只是更新了代码。它应该是:
Math.abs(x1-x2)+Math.abs(y1-y2);
不是Math.abs(x1-y1)+Math.abs(x2-y2);正如我最初所说的那样,不要忘记,这个等式假设你不介意前面、后面或旁边的座位是最近的。如果你想让它们在同一排,你需要在函数中添加额外的检查,如果它起作用,谢谢你的帮助。我真的很感谢你为我花费的时间。非常感谢你,我可以从这里开始!还有一个问题,如果最近的座位在上面,我能找到最近的座位吗?它会在网格中搜索最近的座位,所以它可能在旁边,在上面或下面。结果我的计算错了,只是更新了代码。应该是:
Math.abs(x1-x2)+Math.abs(y1-y2);
不是Math.abs(x1-y1)+Math.abs(x2-y2);正如我最初所说,不要忘记,这个等式假设你不介意