以特定方式输入二维数组中的元素

时间:2015-09-11 23:28:23

标签: java

您好我遇到了这个问题,在2D数组中输入元素,其中行数已知,但列数未知。但是所有行应该具有相同数量的元素。我怎么能在java中做到这一点

像第一个输入一样是行数。然后为矩阵的每一行输入一行。每行包含相同数量的列,每列用空格分隔。

我尝试了这个,但它无法正常工作

System.out.println("Enter the number of rows");
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int [] [] matrix = new int [N][N];
        int row=0;
        int col =0;
        while(sc.hasNextInt() && N<=col)
        {System.out.println("Enter the elements");
            matrix[row][col++]=sc.nextInt();
            col++;
        }
        for(int i=1; i<=N; i++)
        {
            for(int j =0; j<=col;j++)
            {System.out.println("enter the elements");
                matrix[i][j]=sc.nextInt();
            }
        }

2 个答案:

答案 0 :(得分:1)

如果您不知道列数,可以执行以下操作:

    Scanner sc = new Scanner(System.in);

    int rows = sc.nextInt();
    sc.nextLine(); // nextInt() didn't consume the newline so we do it here
    int[][] matrix = new int[rows][];

    for (int i = 0; i < rows; i++) {

        String line = sc.nextLine();
        String[] valueStrings = line.split("\\s+");

        matrix[i] = new int[valueStrings.length];

        for (int j = 0; j < valueStrings.length; j++) {

            matrix[i][j] = Integer.parseInt(valueStrings[j]);
        }

    }

    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < matrix[i].length; j++) {
            System.out.print("" + matrix[i][j] + " ");
        }
        System.out.println();
    }

输入:

3
1 2 3 4
5 6 7 8
9 0 1 2

输出:

1 2 3 4 
5 6 7 8 
9 0 1 2 

编辑:修复了错误的嵌套

答案 1 :(得分:0)

您似乎想要读取具有已知行数和列数的矩阵。 这应该这样做:

Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int[][] matrix = new int[N][N];

System.out.println("Enter the elements");
for (int row = 0; row < N; ++row) {
    for (int col = 0; col < N; ++col) {
        matrix[row][col] = sc.nextInt();
    }
}

在您的尝试中,您需要更多地思考为什么要增加col两次,为什么要比较N或者等于N以及for循环从1开始而不是0的原因。