2011-03-30 64 views
0

我正在研究一個程序,它將2的權力插入到數組中,然後將它們全部打印出7個數字在一條線上。我已經算出所有的東西,所以它的工作原理,但我覺得有一個更好,更乾淨的方式來做到這一點...特別是圍繞嵌套的循環區域。我使用y--減少主循環,但我覺得這不太合適。代碼:嵌套for循環打印一行數組中的七個元素

public class powers { 

    public static void main(String[] args){ 
     long arr[] = new long[2000]; 

     for (int x=0; x<2000; x++){ 
     arr[x] = (long) Math.pow(2, x); 
     } 


     for (int y=0; y<14;y++) { 
     for (int z=0; z<7; z++) { 
      System.out.print(arr[y++] + " "); 
     } 
     y--; // Decrement y by 1 so that it doesn't get double incremented when top for loop interates 
     System.out.println(); // Print a blank line after seven numbers have been on a line 
     } 

     } 

} 
+1

2^2000是否適合長? – Reinderien 2011-03-30 00:18:00

+0

我查了一下 - 長只有64位,所以答案肯定不是。 – Reinderien 2011-03-30 00:18:47

+0

你需要java.math.BigInteger這個... – amit 2011-03-30 00:20:14

回答

6
for (int i = 0; i < 2000; i ++) { 
    System.out.print(arr[i]); // note it's not println 
    if (i % 7 == 6) { // this will be true after every 7th element 
    System.out.println(); 
    } 
} 
0

下面的代碼是更有效,因爲它打印出來,因爲它去。通過這樣做,你可以省去不得不重複遍歷它們的代價。此外,正如評論頂部所述,長期不能將這些值存儲在這些權力的上部區域。

public class powers { 

    public static void main(String[] args){ 
     long arr[] = new long[2000]; 

     for(int x=0; x<2000; x++){ 

      arr[x] = (long) Math.pow(2, x); 

      System.out.print(arr[x] + " "); 

      if(x%7==6) 
       System.out.println(); 

     } 

     //because your loop doesn't end on a 7th element, I add the following: 
     System.out.println(); 

    } 

}
+0

您的輸出將以空行開頭,並且不會以\ r \ n結尾 – amit 2011-03-30 00:30:34

+0

您認爲這是一件壞事。我會解決它,只是爲了讓你快樂。給我一點時間。 – 2011-03-30 00:32:27

+0

看來這不是他所要求的,所以這是一個糟糕的想法..我不知道'以\ r \ n結尾(如果需要或不需要),但肯定不應該有一個空白線。 – amit 2011-03-30 00:33:55