gpt4 book ai didi

java - 如何使用文件输入创建二维数组

转载 作者:行者123 更新时间:2023-11-30 02:01:08 25 4
gpt4 key购买 nike

我的任务是使用文件输入执行矩阵乘法。乘法过程的实际数学计算没有问题;将数据存储到二维数组中让我感到困惑。

这是我必须用来创建二维数组的数据文件:

matrix
row
1
2
-2
0
row
-3
4
7
2
row
6
0
3
1
matrix
row
-1
3
row
0
9
row
1
-11
row
4
-5

规则非常简单:新矩阵的开始将用“matrix”表示,新行的开始将用“row”表示,后跟分配给该行每列的数字。

对于上下文,这是我的矩阵乘法方法:

static int[][] mult(int[][] a, int[][] b) {

int aRow = a.length;
int aCol = a[0].length;

int bRow = b.length;
int bCol = b[0].length;

if (bRow != aCol) {
throw new IllegalArgumentException("Matrix A is not multipliable by Matrix B");
}

int[][] product = new int[aRow][bCol];

for (int i = 0; i < product.length; i++) {
for (int j = 0; j < product[i].length; j++) {
for (int k = 0; k < aCol; k++) {
product[i][j] += a[i][k] * b[k][j];
}
}
}
return product;
}

这是具有主要方法的类,我尝试将上述文本文件中的数据存储到二维数组中(尝试将第一个矩阵存储到名为“a”的二维数组中,将第二个矩阵存储到名为“b”的二维数组):

public static void main(String[] args) throws FileNotFoundException {

Scanner scanner = new Scanner(new File("/Users/Krish/IdeaProjects/Lessons/src/Lesson34/MatrixData.txt"));
String text[] = new String[100];
int index = -1;

while (scanner.hasNext()) {
text[++index] = scanner.nextLine();
}


int[][] a = {{}};
int[][] b = {{}};
int[][] product = MatrixMult.mult(a, b);

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

scanner.close();

}

我知道我必须做如下的事情,但老实说,我不知道该怎么做,并且非常感谢一些帮助/指导:

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

Scanner line = new Scanner(text[i]);
int n = 0;

while (line.hasNextInt()) {
n = line.nextInt();
for (int j = 0; j < a.length; j++) {
for (int k = 0; k < a[j].length; k++) {
a[j][k] = n;
}
}
}
}

最佳答案

我建议您使用Java Collections代替数组并以这种方式读取矩阵。例如,您从输入流中读取“matrix”值并调用此方法:

private int[][] readMatrix(final BufferedReader reader) {
List<List<Integer>> matrix = new ArrayList<>();
int rowNumber = -1;
while(reader.hasNext()) {
String value = reader.readLine();
if ("row".equals(value)) {
++rowNumber;
matrix.add(new ArrayList<Integer>());
} else {
int intValue = Integer.parseInt(value);
matrix.get(rowNumber).add(intValue);
}
}

// convert to an array
int[][] array = new int[matrix.size()][];
for (int i = 0; i < matrix.size(); ++i) {
List<Integer> row = matrix.get(i);
array[i] = row.toArray(new int[row.size()]);
}
return array;
}

关于java - 如何使用文件输入创建二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52793804/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com