如何从java中的txt文件中读取两个矩阵

问题描述 投票:-2回答:1

因此,我得到了一个包含两个3x3矩阵的.txt文件,需要携带这些矩阵来进行加,乘,减和标量乘法,其中程序只需一个矩阵,用户输入一个数字操作。 问题是让程序只读取矩阵。 这是我给出的.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 + " ");
        }
    }
}

java arrays matrix matrix-multiplication
1个回答
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]]
© www.soinside.com 2019 - 2024. All rights reserved.