为什么这个程序需要2个for循环?

时间:2016-09-10 14:04:11

标签: java arrays for-loop

为什么这个程序需要2个循环才能运行?有没有办法写这个没有2 for循环?

其目的是将整数值1-25分配给长度为25的数组。然后将数组打印为五个单独的行,每行包含五个以逗号分隔的数组元素。

它的输出是这样的:

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 ArrayNums
{
     static int[] arrayList = new int[25];

     public static void main(String[] args)
     {

        for(int i=0; i<25; i++)
           arrayList[i] = i + 1;   
        printArray();
     }

     public static void printArray()

     {
        int i;
        for(i=1; i<=25; i++){
            if (i % 5 != 0)
                System.out.print(arrayList[i-1]+",");
            else
                System.out.println(arrayList[i-1]);
       }
     }
}

3 个答案:

答案 0 :(得分:0)

当然,主要功能是这样的:

public static void main(String[] args)
{
    for(int i=0; i<25; i++){
       arrayList[i] = i + 1;   
       if ((i+1) % 5 != 0)
            System.out.print(arrayList[i]+",");
        else
            System.out.println(arrayList[i]);
    }
}

尽管如此,让一个函数一次只做一件事被认为是更好的做法。这使得理解起来更容易,因此我建议您使用第一个版本。

答案 1 :(得分:0)

将其分开,因为这样可以分离关注,并更好地使用和维护程序。正如@ cricket_007所述,将buildArray()作为printArray()&#34;的单独函数更好。

在这种情况下,输出可以使用单个循环实现,而可以打印i而不是arrayList内容,但我怀疑你真的有一个关键需求在5行上打印1到25 - 假设构建和打印功能在实践中会改变。考虑几个场景:

场景1 让我们说稍后该程序还需要输出到CSV文件并返回一个JSON对象(不是同时但是通过不同的函数调用)。如果您在同一个循环中构建和打印,现在需要将构建部分放入三个不同的函数中。

场景2 我们假设您需要将数组的内容从数字更改为字母或输入数据,或者程序能够执行这三者中的任何一项。在循环中进行此更改会使查看潜在的冲突或错误变得更加困难。

场景3 情景1和情景2都会发生。

答案 2 :(得分:0)

我认为这会对你有帮助。你可以在第一个方法中轻松添加printarray()方法。

public static void main(String[] args) {
    for(int i=1;i<=25;i++){
        arrayList[i-1]=i;
        if(i%5==0){
            System.out.println(i);
        }else{
            System.out.print(i+",");
        }
    }
}