2016-09-10 7 views
-3

なぜこのプログラムは機能するために2 forループが必要ですか? 2 forループなしでこれを書く方法はありますか?なぜこのプログラムで2ループが必要ですか?

その目的は、長さ25の配列に整数値1から25を割り当てることです。次に、配列を5つの別々の行として出力します。各行には、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 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

'arrayList'を削除して' i'を直接印刷してください。 – melpomene

+1

arrayListは、配列の誤解を招く名前です... –

+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

ありがとうございます。上のコードは、リストではなく "25"を出力します。 – HerdingDogRescuer

+0

@HerdingDogRescuerおそらく、 'for'ループの後に' {'を忘れたか、' {'の前に'; 'を挿入したでしょうか。 –

+0

@tobias_kはい、中括弧が間違っていました。ありがとうございました。 – HerdingDogRescuer

0

Separation of Concernsとプログラムの使用方法とメンテナンスが改善されているため、別にしてください。 @ cricket_007が述べたように、「buildArray()をprintArray()とは別の関数として持つ方が良い」

このシナリオでは、出力単一のループを使用して達成することができ、あなたプリント私の代わりに、ArrayListの内容でしたが、私はあなたが本当に5本のライン上の25に1を印刷する重要なニーズを持っている疑い - ビルドとプリント機能が実際には変わると仮定します。いくつかのシナリオを考えてみましょう:

シナリオ1 はのは、プログラムが、後にCSVファイルへの出力もするために必要と(同時にではないが、別の関数呼び出しによって)JSONオブジェクトを返したとしましょう。同じループでビルドして印刷している場合、今では建物の部分を3つの異なる機能にする必要があります。

シナリオ2 のは、あなたが文字や入力されたデータまたはこれら3つのいずれかを実行するプログラムのための能力に番号から配列の内容を変更する必要があるとしましょう。ループ内でこの変更を行うと、潜在的な競合やエラーが発生しにくくなります。

シナリオ3 シナリオ1とシナリオ2の両方が発生します。

+0

注目していただきありがとうございます!たくさんの意味があります。 – HerdingDogRescuer

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+","); 
     } 
    } 
} 
+0

+ Erangadありがとうございました。 printArray()メソッドの追加についてはっきりしていません。私は次のエラーを取得しようとします:moreArray.java:5:エラー:シンボルを見つけることができません – HerdingDogRescuer

関連する問題