无法在Java中打印2d数组

时间:2016-10-04 07:12:45

标签: java arrays multidimensional-array

我正在尝试将输入输入到2d数组并打印出来。

  

我不想使用Java接口的ArrayList集合或任何其他库   我在控制台上打印时遇到问题。输入效果很好

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();
        }
    }
}

2 个答案:

答案 0 :(得分:2)

你的问题从这里开始:

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

是什么让您认为用户输入的最后一个 n 反映了数组的边界?

换句话说:您将阵列定义为100 x 100;阵列本身也知道它们的大小;所以你只需要去

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

请注意:您应该考虑重写您的“输入”方法。截至目前,该代码高度令人困惑;循环风格很奇怪;并且如上所述:防止超出阵列限制的良好保护......看起来与你放下的不同!

答案 1 :(得分:1)

如果你想要打印所有数组,你需要用0开始每个索引,在你的代码中你用i开始你的第二个循环,你忘了将每个条目添加到总和

      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);
   }