2016-12-01 151 views
-3

我想打印一個2維雙數組到控制檯。Java類什麼都不做

public class arrayprinter { 
    public static void main(String[] args) { 
     double[][] multi = new double[][]{ 
       { 10, 20, 30, 40, 50}, 
       { 1.1, 2.2, 3.3, 4.4}, 
       { 1.2, 3.2}, 
       { 1, 2, 3, 4, 5, 6, 7, 8, 9} 
      }; 
     print(multi); 
    } 
    private static void print(double[][] e){ 
     for(int i=0; i>e.length;i++) { 
      print(e[i]); 
     } 
    } 
    public static void print(double[] e) { 
     for(int i=0; i>e.length;i++) { 
      System.out.print(e[i]);  } 
    } 
    } 

當我點擊在eclipse播放按鈕僅存在:<terminated>...並在控制檯沒有印刷的陣列。有人能說我做錯了嗎?

+2

接下來的時間,只是嘗試調試。打印留言或使用調試器。你會發現這個循環是錯誤的。 – AxelH

+0

Litlle bug圖標沒有找到。也許我必須看看調試器手冊。 – Colin

+0

是的,你應該閱讀它。調試器不是自動的,這是一個運行時,你可以添加一些斷點。那些程序在讀取特定的行時會停止該程序,讓您有機會檢查變量/實例的值。 – AxelH

回答

2

你的程序永遠不會到達打印的行。你開始在i=0,並增加它,而它更大的是e.length,但它永遠不會是,因爲迴路存在於第一次運行(i = 00e.length因此存在循環並不是越大)
使用這些:

private static void print(double[][] e) { 
    for (int i = 0; i < e.length; i++) { 
     print(e[i]); 
    } 
} 

public static void print(double[] e) { 
    for (int i = 0; i < e.length; i++) { 
     System.out.print(e[i]); 
    } 
} 

我用循環中的<替換了>

+0

是的你是對的。謝謝你 – Colin

+0

@Colin如果你接受答案,將其標記爲已接受(v符號在答案分數下) – ItamarG3

+0

我必須等待8分鐘,然後我才能接受 – Colin

6

你想幹什麼

i < e.length 

不是 「i>e.length」。

+0

哦,我現在很尷尬。你說得對,解決了我的問題。謝謝。 – Colin

1

你比較,我> e.length錯了,它應該是我< e.length,見下文

private static void print(double[][] e){ 
    for(int i=0; i<e.length;i++) { 
     print(e[i]); 
    } 
} 
public static void print(double[] e) { 
    for(int i=0; i<e.length;i++) { 
     System.out.print(e[i]);  } 
} 
0

代碼,而不是編寫兩個方法,你也可以使用一個襯墊像

public static void main(String[] args) { 
     double[][] multi = new double[][]{ 
      { 10, 20, 30, 40, 50}, 
      { 1.1, 2.2, 3.3, 4.4}, 
      { 1.2, 3.2}, 
      { 1, 2, 3, 4, 5, 6, 7, 8, 9} 
     }; 
     System.out.println(Arrays.deepToString(multi)); 
    } 
+0

好的,我會牢記這一點。 – Colin