将TextIO文件转换为向量(数组),然后返回

时间:2015-10-30 20:32:17

标签: java arrays matrix type-conversion

我正在尝试编写一个家庭作业程序,打开一个由字符串给出的文件,并将一系列逗号分隔的整数值读入一个数组,然后返回。

import java.util.Arrays;

...

int[] readVector(String filename) throws IOException {
    File f = new File(filename);

    FileOutputStream fos = new FileOutputStream(f, true);

    PrintWriter pw = new PrintWriter(fos);
    pw.println("");
    pw.close();

    FileReader fr = new FileReader(f);
    BufferedReader bfr = new BufferedReader(fr);
    while (true) {
        String s = bfr.readLine();
        if (s == null) {
            break;
        }
        System.out.println(s);
    }
    bfr.close();;

    return NOIDEA;
}

考虑一下......

Matrix m = new Matrix();
System.out.println(Arrays.toString(m.readVector("vector.txt"))); // print "[1, 2, 3, 4]"

2 个答案:

答案 0 :(得分:0)

将文件内容读入数组,然后使用以下命令进行转换:

var data = ["cat", "dog", "bird"];

var doThing = function (val) { 
     return val + ", go away!" 
}

function alterData (data) {
    return data.map(doThing);
}

alterData(data);

如果您在中将文本文件读入数组时遇到问题,请查看this question

答案 1 :(得分:0)

根据您的描述, 你的实现包含很多它不需要的东西, 例如FileOutputStreamPrintWriter。 如果值在一行上, 那么它足以处理一条线, 这对Scanner很容易。

这应该这样做:

int[] readVector(String filename) throws IOException {
    return Arrays.stream(new Scanner(new File(filename)).nextLine().split(","))
           .mapToInt(Integer::parseInt).toArray();
}