2016-10-04 94 views
1

我正在嘗試輸入2d數組並打印它。

我不想使用Java接口或任何其他圖書館,我在打印在控制檯上有問題 的ArrayList集合.The輸入工作良好無法在Java中打印2d陣列

import java.lang.*; 
import java.util.*; 

class Triangle{ 
    public static int n; 
    public static void main(String args[]){ 
     Scanner in = new Scanner(System.in); 
     int i, j, cases; 
     int[][] values = new int[100][100]; 
     cases = in.nextInt(); 
     while(cases-- > 0){ 
      n = in.nextInt(); 
      int temp; 
      for(i=0 ; i<n ; i++){ 
       for(j=0 ; j<=i ; j++){ 
        values[i][j] = in.nextInt(); 
       } 
      }  
     } 
     large(values); 
    } 
    public static void large(int[][] arr){ 
     for(int i = 0 ; i<n ; i++){ 
      for(int j=i ; j<i ; j++){ 
       System.out.print(arr[i][j] + " "); 
      } 
      System.out.println(); 
     } 
    } 
} 
+0

什麼問題你有嗎?我乍看之下唯一的問題是,當你走的時候,你永遠不會計算出「總和」。 –

+0

哦!我忘了刪除總和。只是想輸入和打印像三角形形式的二維數組 –

回答

2

你的問題從這裏開始:

public static void large(int[][] arr){ 
    for(int i = 0 ; i<n ; i++){ 

是什麼讓你認爲最後ñ用戶refle進入你的數組的邊界是什麼?

換句話說:您定義的數組大小爲100 x 100;並且陣列本身知道它們的大小;所以你只要去

for(int i=0; i < arr.length; i++) { 
    for (int j=0; j < arr[i].length; j++) { 

請注意:你也應該考慮重做你的「輸入」方法。截至目前,該代碼爲高度混淆;循環風格很奇怪;正如所說:防止超出陣列限制......看起來與您放下的不同!

1

如果你想打印所有你需要從0開始的每個索引,在你的代碼,你跟我開始你的第二個循環的數組,你忘了每個條目添加到總和

 public static void large(int[][] arr){ 
    for(int i = 0 ; i<n ; i++){ 
     for(int j=0 ; j<i ; j++){ 
      System.out.print(arr[i][j]); 
      sum+=arr[i][j]; 
     } 
     System.out.println(); 
    } 
    System.out.println(sum); 
    }