2016-10-04 96 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); 
    }