地形表示中数组值的错误

时间:2016-10-27 16:13:05

标签: java arrays eclipse math

我希望用1&0和0来制作围栏以表示地形。 1将是围栏,0将是空格。这是我的代码:

package assignment_2;

import java.util.Map;
import java.util.Scanner;

    public class Fencing {

    public static void main(final String[] args) {

        boolean b = true;
        int i;
        int j;
        final int[][] map = { { 0, 1, 1, 0 }, { 1, 2, 1, 1 }, { 1, 1, 3, 0 }, { 1, 4, 0, 0 } };
        for (i = 0; i < 4; i++) {
            for (j = 0; j < 4; j++) {
                if (map[i][j] != 1 && map[i][j] != 0) {
                    b = false;

                    if (b == false) {
                        System.out.println("Map does not have the correct format");
                        b = true;
                        while (i < 4 && j < 4) {
                            System.out.println("--> A value of " + map[i][j] + " was found at " + i + "," + j);
                            i++;
                            j++;

                        }
                    } else {
                        System.out.println("The map is valid");
                        return;
                    }
                }
            }
        }
    }
}

现在,此代码滚动数组值,如果有值不是1或0,则会将它们报告给用户。如果没有错误,它应该报告&#34;地图有效&#34;。我有两个问题,第一个问题是阵列正确并且没有错误(仅由1&0; s和0&#39; s组成)它没有显示任何内容,它应该在哪里显示& #34;地图格式正确&#34;。第二个问题是更重要的问题,其中数组的底线似乎有问题。它跳过不正确的值,如4,只报告结束行,即位置3,3处的0。这是一个正确的值,因此我不确定该怎么做。其他线路没有这个问题,他们报告了正确的错误,如3和2.有没有人知道什么是错的?

1 个答案:

答案 0 :(得分:0)

对于您的第一个问题:您将b设置为false,然后在下一行中询问if( b == false)。所以那显然true并且从不调用else块。

执行if (map[i][j] != 1 && map[i][j] != 0){并同时使用布尔值b是多余的。

对于第二个问题:一旦找到错误的数字,您就会通过地图对角线(同时增加ij)并打印每个数字,直到您到达右侧或地图的底端。我认为这不是您想要存档的内容。由于我不知道你想打印什么,我不能告诉你如何解决这个问题。

编辑:如果你真的想要打印一个不正确的数字,你不需要在double for循环中使用while循环,只需打印不正确的值并让double for循环继续工作

编辑2:解决问题的可能方法:

for(int i = 0; i < 4; i++) {
    for(int j = 0; j < 4; j++) {
        if (map[i][j] != 1 && map[i][j] != 0) {
            b = false;
            System.out.println("--> A value of " + map[i][j] + " was found at " + i + "," + j);
        }
    }
}

if(b){
    System.out.println("The map is valid");
}else{
    System.out.println("Map does not have the correct format");
}

此解决方案的唯一缺点是,它在打印错误值后打印错误消息。