尝试在Java中正确打印数组

时间:2014-02-05 02:23:40

标签: java arrays int

我是编程新手,如果我没有正确提出我的问题请耐心等待。我有一个创建程序的任务,将整数值1-25分配给25个元素的整数数组。我需要将数组打印为五个单独的行,每行包含5个以逗号分隔的元素。最后一个元素后面没有逗号。最终输出应如下:

  

1,2,3,4,5

     

6,7,8,9,10

     

11,12,13,14,15

     

16,17,18,19,20-

     

21,22,23,24,25

我提出的代码很接近,但它并不完全正确。我提出的代码是:

public class Test2 {

/**
 * @param args
 *            the command line arguments
 */
    public static void main(String[] args) {
        int[] numbers = new int[25];
        for (int i = 0; i < numbers.length; i++) {
            numbers[i] = i + 1;

            System.out.print(numbers[i] + ",");
            if (i % 5 == 0 && i > 0)
                System.out.println();

        }
    }
}

我从代码中获得的打印输出如下:

  

1,2,3,4,5,6,

     

7,8,9,10,11,

     

12,13,14,15,16,

     

17,18,19,20,21,

     

22,23,24,25,

我不知道为什么我在第一行获得1-6,以及如何删除每行末尾的逗号。任何指出我的错误的帮助将不胜感激。

4 个答案:

答案 0 :(得分:1)

您在第一行收到6个号码,因为您从i=0开始计算,并且仅在i=5时打印换行符;您刚刚打印的数字是6,而不是5 - 您在每次迭代中打印i+1

如果你的逻辑使得它打印了逗号或换行而不是两者,那么你就可以删除行尾的逗号。

答案 1 :(得分:1)

你很亲密。 非常 关闭。

考虑你的条件正在检查 - 你想要检查一个值i,并希望在该特定值可被5整除但是非零时停止。

问题是您的错误值 - i不是您想要的,而是numbers[i]。原因是:numbers[i]中的每个数字都被i偏移1。

您要做的是检查numbers[i]是否可以被5整除。但您仍然需要检查非零i

if(numbers[i] % 5 == 0 && i > 0) {
    System.out.println(numbers[i]);
} else {
    System.out.print(numbers[i] + ",");
}

答案 2 :(得分:1)

错误是您正在检查int i是否可被5(i%5)整除,而不是数字[i](数字[i]%5)。这样,您的代码就会打印出来:

number 1 when i = 0,
number 2 when i = 1,
number 3 when i = 2,
number 4 when i = 3,
number 5 when i = 4,
number 6 when i = 5

最后打印换行符。

正确的代码是:

int[] numbers = new int[25];
for (int i = 0; i < numbers.length; i++) {
    numbers[i]=i+1;

    System.out.print(numbers[i]);
    if (numbers[i] % 5 == 0 && i > 0) {
        System.out.println();
    } else {
        System.out.print(",");
    }
}

以上代码将打印(按预期):

1,2,3,4,5
6,7,8,9,10
11,12,13,14,15
16,17,18,19,20
21,22,23,24,25

答案 3 :(得分:0)

替换

if (i % 5 == 0 && i > 0)

if (i % 5 == 4)