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}};
}
答案 0 :(得分:0)
首先,您在这里要做的是在每次迭代中重新分配变量rows
和columns
。因此,最后,矩阵中的每一行将只有一个值。
第二,您要将 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();
}
}
}