数组打印的数字多于预期数量?

时间:2016-05-04 23:50:36

标签: java arrays

我应该创建并初始化一个100个元素的数组,然后使第7个元素成为数字“7”,最后打印数组,每20个元素开始一个新行。我一直在努力解决这个问题,但我不能。

我现在的代码是:

public class Array {

    public static void main(String args[]) {
        int [] array = new int[100];  

        for (int a = 0; a < array.length; a++) {
            if (array[a] == 6) {
                array[a]=7;
                array[a] = a + 1;
            }
            printArray(array);
        }
    }

    public static void printArray(int[] array){
        for (int a=0; a < array.length; a++) {
            System.out.print(" " + array[a]);
            if ((a - 1) % 20 == 0) {
                System.out.println("");
            }
        }
    }
}

当我运行它时,我的输出是很多零,远远超过100.它们按预期每20个字符分隔,但第七个元素不是7.我认为它与int“a之间的关联有关“和我的阵列,但我无法弄清楚。我知道解决方案必须简单,但我无法看到它。谢谢大家!

5 个答案:

答案 0 :(得分:1)

正确缩进代码,特别是main方法,可以揭示正在发生的事情。您正在printArray循环中调用for,因此您将打印数组内容100次。

    for (int a = 0; a < array.length; a++) {
        if (array[a] == 6) {
            array[a]=7;
            array[a] = a + 1;
        }
        printArray(array);
    }

printArray循环的}结束括号之后将调用移至for

现在你将获得100 0秒。

此外,如果索引不是array[a] = a + 1;,我认为你的意思是执行6,例如

if (array[a] == 6) {
    array[a] = 7;
} else {
    array[a] = a + 1;
}

此外,您需要在20个数字后打印换行符,例如在索引1939等之后,在计算余数之前将1添加到a,而不是减去1,以便{{1} },其余数为19 + 1 = 20

答案 1 :(得分:0)

有很多事情是错的。但是,要回答您的问题,您将打印阵列100次,因为printArray位于您的第一个循环中。

答案 2 :(得分:0)

您在主方法中错误地放置了一个结束括号。格式正确的方法如下所示:

public static void main(String args[]) {
    int [] array = new int[100];  

    for (int a = 0; a < array.length; a++) {
        if (array[a] == 6) {
                array[a]=7;
        }
        array[a] = a + 1;
    }

    printArray(array);
}

答案 3 :(得分:0)

首先,您的代码组织得非常糟糕,因此您很容易错过那里的内容。你有2个重大错误,首先你叫printArray() 在你的for循环内,因此打印100次。 其次,您一直在检查索引a中数组内的值是否为6。 您需要检查a是否为6,因为它是您的索引:

if(a == 6)
    array[a] = 7;

答案 4 :(得分:0)

好吧,我运行了你的代码,还有一些地方可以纠正。

至于你打印的很多东西的问题,那是因为你把你的printarray()放在for循环中,所以它打印了100次这个数组。

至于打印出来,我觉得这段代码更简洁:

public static void printArray(int[] array){
    int counter = 0;
    for(int i = 0; i < array.length; i++){
        System.out.print(array[i] + " ");
        counter++;
        if(counter == 20){
            counter = 0;
            System.out.print("\n");
        }
    }
}

另外,我不确定你为什么要使用for循环来改变第7个元素。你可以用这个:

array[6] = 7;

我不确定你在for循环中做了什么。

我希望这有帮助!祝你好运!