Bidimentional Array

时间:2015-11-14 00:50:39

标签: java loops

你好,我的所有程序都包含一个2维数组,我在一个循环中读取2个坐标,并试图检查数组中的那些坐标是否已经填充了一个星号,如果这是真的,你想重新表达我的数组的默认值为“ - ”,如果在指定的位置没有星号,你想用星号填充它,我不确定我是否正确的方法。

这是我的代码的一部分。 谢谢大家。

    String[][] matrix = new String[5][5];
    String asterisc = "*";
    String defaultValue = "_";
    Scanner sc = new Scanner(System.in);
    int a, b;

    for (int i = 0; i < matrix.length; i++) {

        for (int j = 0; j < matrix.length; j++) {

            matrix[i][j] = defaultValue;
        }
    }

    for (int i = 0; i < matrix.length; i++) {

        for (int j = 0; j < matrix.length; j++) {

            System.out.print(matrix[i][j] + "|");
        }
        System.out.println();
    }

    a = 0;
    b = 0;

    while (a >= 0 && b >= 0 && a < matrix.length && b <  matrix.length) {

        a = sc.nextInt();
        b = sc.nextInt();

        for (int i = 0; i < matrix.length; i++) {

            for (int j = 0; j < matrix.length; j++) {

                if (matrix[a][b].equals(asterisc)) {

                    matrix[i][j] = defaultValue;

                } else {

                    matrix[a][b] = asterisc;

                }
            }
        }

    }

2 个答案:

答案 0 :(得分:0)

遗憾的是,您的代码存在许多问题。

此外,您还没有解释您的算法尝试做什么。

简而言之,要将所有星号设置为默认值,您可以执行

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

        if matrix[i][j].equals(asterisc){
           matrix[i][j]=defaultValue;
        }
    }
    System.out.println();
}

<强>但是 你为什么要使用while循环?

为什么使用扫描仪?

为什么a和b初始化为零,但环路需要大于零?

每次(a,b)项目是星号时,你是否真的试图重新初始化整个数组?

答案 1 :(得分:0)

我认为这不是真的。假设你打字了#6; 6 6&#34;在终端中,然后变量a = 6,并且b = 6,这大于数组长度,程序将抛出异​​常。我认为您可能想要做的事情可以遵循以下代码:

while(true){
    a = sc.nextInt();
    b = sc.nextInt();
    if(a<0||a>matrix.length||b<0||b>matrix.lenght)
        break;
}