首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >terrain制图表达中数组值的错误

terrain制图表达中数组值的错误
EN

Stack Overflow用户
提问于 2016-10-28 00:13:05
回答 1查看 40关注 0票数 0

我想做一个用1和0来表示地形的栅栏。1将是栅栏,0将是空格。下面是我的代码:

代码语言:javascript
复制
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的值,则将它们报告给用户。如果没有错误,它应该报告“地图是有效的”。我有两个问题,第一个问题是,当数组是正确的并且没有错误(只由1和0组成)时,它不会显示任何东西,而它应该显示“地图格式正确”。第二个问题是更重要的问题,数组的底线似乎有问题。它跳过像4这样的不正确的值,只报告结束行,这是位置3,3的0。这是一个正确的值,所以我不确定这是怎么回事。其他代码行没有这个问题,它们会像3和2一样报告正确的错误。有人知道哪里出了问题吗?

EN

回答 1

Stack Overflow用户

发布于 2016-10-28 00:33:22

所以这显然是true,而else块永远不会被调用。

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

对于第二个问题:一旦你发现了一个错误的数字,你就会对地图进行对角扫描(同时增加ij ),并打印每个数字,直到你到达地图的右端或底端。我不认为这是你想存档的东西。因为我不知道你想打印什么,所以我不能告诉你如何解决这个问题。

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

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

代码语言:javascript
复制
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");
}

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40289564

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档