如何从Java

时间:2019-03-11 13:14:18

标签: java arrays matrix matrix-multiplication

因此,我得到了一个.txt文件,其中包含两个3x3矩阵,并且需要携带这些矩阵来进行加,乘,减和标量乘法运算,其中程序将仅使用一个矩阵,而用户将输入操作编号。
问题在于使程序只能读取矩阵。
这是我得到的.txt文件,其中前两个数字是大小:


3 3
12 34 45
34 -12 56
76 12 -1
@
3 3
8 13 45
67 0 12
12 -12 3


那里有救生员吗?


EDIT1

到目前为止,这是我所拥有的,乘法方法在我让用户输入矩阵时起作用,但是现在只是给出一些奇怪的答案,我想念的是什么?

import java.io.*;

public class ReadingTest {
    public static void main(String[] args) throws IOException {
        BufferedReader reader;
        reader = new BufferedReader(new FileReader("matrix2.txt"));

        String firstDimension = reader.readLine();
        String[] split = firstDimension.split(" ");
        int firstX = Integer.parseInt(split[0]);
        int firstY = Integer.parseInt(split[0]);

        int[][] first = new int[firstX][firstY];

        for (int i = 0; i < firstX; i++) {
            String[] line;
            line = reader.readLine().split(" ");

            for (int j = 0; j < firstY; j++) {
                first[i][j] = Integer.parseInt(line[j]);
            }

        }

        // Read "@"
        reader.readLine();

        String secondDimension = reader.readLine();
        String[] split2 = secondDimension.split("");
        int secX = Integer.parseInt(split2[0]);
        int secY = Integer.parseInt(split2[0]);

        int[][] second = new int[secX][secY];

        for (int i = 0; i < secX; i++) {
            String[] line;
            line = reader.readLine().split(" ");

            for (int j = 0; j < secY; j++) {
                second[i][j] = Integer.parseInt(line[j]);
            }

        }

        // System.out.println(Arrays.deepToString(second));

        multiply(first, second);

        reader.close();
    }

    public static void multiply(int[][] first, int[][] second) {
        for (int i = 0; i < first.length; i++) {
            int total = 0;
            for (int j = 0; j < second[0].length; j++) {
                int fnum = first[i][j];
                int snum = second[j][i];
                int product = fnum * snum;
                total += product;
            }
            System.out.print(total + " ");
        }
    }
}

1 个答案:

答案 0 :(得分:0)

您必须:

  • 阅读第一行

  • 将其拆分以获取尺寸

  • 阅读下一行(关于尺寸)

  • 读取特殊字符(@

  • 重复

读取那里的第一个数组:

static void readFile() throws IOException {
    BufferedReader reader;
    reader = new BufferedReader(new FileReader("file.txt"));

    String firstDimension = reader.readLine();
    String[] split = firstDimension.split(" ");
    int firstX = Integer.parseInt(split[0]);
    int firstY = Integer.parseInt(split[0]);

    int[][] first = new int[firstX][firstY];

    for (int i = 0; i < firstX; i++) {
        String[] line = reader.readLine().split(" ");

        for (int j = 0; j < firstY; j++) {
            first[i][j] = Integer.parseInt(line[j]);
        }

    }

    // Read "@"
    reader.readLine();

    System.out.println(Arrays.deepToString(first));


}

,并根据输入:

3 3
12 34 45
34 -12 56
76 12 -1
@
3 3
8 13 45
67 0 12
12 -12 3

输出应为:

[[12, 34, 45], [34, -12, 56], [76, 12, -1]]