为什么我的2d数组变量不接受输入?

时间:2019-04-11 09:06:11

标签: java

Noob编程...我需要创建一个函数,该函数接收2d数组并请求用户输入以填充行和列。显示给我的错误是最后一行上的“空语句” /“不是语句”。

  public static void fillMatrix(int [][] pmatrix) throws IOException {

       int [][] matrix = new int [pmatrix.length][pmatrix.length];
       int i, k; //loop variables
       int rows, columns; 

       for(i = 0; i < pmatrix.length; i++){

           print.println("set the value of the row " + (i + 1));
           rows = Integer.parseInt(read.readLine());                   
       }

       for(k = 0; k < pmatrix.length; k++){

           print.println("set the value of the column " + (k + 1));
           colums = Integer.parseInt(read.readLine());   

        }

       matrix = {{rows}, {columns}};


    }

2 个答案:

答案 0 :(得分:0)

首先,您在这里要做的是在每次迭代中重新分配变量rowscolumns。因此,最后,矩阵中的每一行将只有一个值。

第二,您要将 local 变量matrix重新分配为一个矩阵,该矩阵具有两行和一列。而且,由于它与参数pmatrix没有任何关系,因此该方法返回后将不会发生任何事情。

我假设您想在一个空的2D数组上调用该方法,并用控制台中的值填充它。要遍历2D数组,您将需要一个嵌套的for循环并分别访问矩阵中的每个索引:

public static void fillMatrix(int [][] pmatrix) throws IOException {
    for(i = 0; i < pmatrix.length; i++){
        for(int j = 0; j < pmatrix[i].length; i++ {
            print.println("set the value of row " + (i + 1) + " in column " + (j + 1));
            pmatrix[i][j] = Integer.parseInt(read.readLine());    
        }               
    }
}

答案 1 :(得分:0)

在整个上下文中更容易理解。 以下代码具有一个创建3x3大小的矩阵的主要方法,您可以根据需要更改此方法。 接下来,它调用fillMatrix方法,然后调用printMatrix方法。

fillMatrix遍历每一行,每一行遍历每一列。对于矩阵中的一个条目,它使用Scanner而不是BufferedReader来读取整数,因为它更易于使用。

printMatrix遍历所有条目并将其打印为表格。

运行程序并提供1 2 3 4 5 6 7 8 9印刷品

1 2 3
4 5 6
7 8 9

程序

import java.io.IOException;
import java.util.Scanner;

public class Helper {
    public static void main(final String[] args) throws IOException {
        final int[][] matrix = new int[3][3];
        fillMatrix(matrix);
        printMatrix(matrix);
    }

    public static void fillMatrix(final int[][] matrix) throws IOException {
        final Scanner scanner = new Scanner(System.in);
        for (int i = 0; i < matrix.length; i++) {
            final int[] row = matrix[i];
            for (int j = 0; j < row.length; j++) {
                final int userInput = scanner.nextInt();
                row[j] = userInput;
            }
        }
    }

    private static void printMatrix(final int[][] matrix) {
        for (int i = 0; i < matrix.length; i++) {
            final int[] row = matrix[i];
            for (int j = 0; j < row.length; j++) {
                System.out.print(row[j] + " ");
            }
            System.out.println();
        }
    }
}