【问题标题】:Get integers from textfile从文本文件中获取整数
【发布时间】:2014-05-03 08:54:13
【问题描述】:

基本上,我一直在寻找一个将数组的一些数据放入文本文件的脚本,之后保存的数据可能会再次变为红色。

我做到了这样的第一部分:

public void slaOp(){
    try {
        File file = new File("savefile.txt");
        // Als bestand nog niet bestaat maak je het.
        if (!file.exists()) {
            file.createNewFile();
        }
        // Schrijven naar de file
        FileWriter fw = new FileWriter(file.getAbsoluteFile());
        BufferedWriter bw = new BufferedWriter(fw);   
            // alle x waarden op 1 lijn en alle y waarden op 1 lijn
            String xwaarden = "";
            for(int i=0; i<positiesX.length;i++){
                xwaarden += ""+positiesX[i];
            }
            String ywaarden="";
            for(int s=0; s<positiesY.length;s++){
                ywaarden += ""+positiesY[s];
            }
    bw.write(xwaarden);
            bw.newLine();
            bw.write(ywaarden);
    bw.close();
    System.out.println("Bestand werkt correct verwerkt.");
} catch (IOException e) {
        e.printStackTrace();
}
}

这第一部分将数据写入文件,如下所示:

123456

465489

对于第二部分,我找到了很多方法,但没有一种适合我的需求。 首先,我有一个脚本,将整行红色作为字符串。除了我不需要 Stringline 但数字分开的部分之外,这有效。

之后我尝试了一个使用 hasNextInt() 和 nextInt() 的脚本。 但是由于某种原因,这个脚本没有读到任何东西。我认为问题在于文本文件中的整数不是实际整数而是字符串这一事实? 我无法解决这个问题,所以尝试了第三个脚本。

FileInputStream fileInput = new FileInputStream("savefile.txt");
    int r;
    while ((r = fileInput.read()) != -1) {
       int c = (int) r;
        System.out.println(c);
    }
    fileInput.close();

此脚本读取字符。当将它们转换为整数时,输出不是保存到文件中的数字。

谁能告诉我处理这种情况的正确方法?有没有一些很好的例子解释?

【问题讨论】:

  • 如果每行只有一个数字,则可以将该行读取为字符串,然后使用Integer.parseInt。这行得通吗?
  • 我已经尝试过了,但我需要按数字输入数字。

标签: java parsing type-conversion


【解决方案1】:

我同意@prabugp。如果文件的每一行只有一个数字,那么你可以逐行读取,然后使用Integer.parseInt将每一行转换为整数。

目前,我认为您在读取文件时获得的数字与文件中的数字不同的原因是因为您将一行中的每个字符转换为其整数表示,正如@srm 提到的那样。所以你得到了字符“1”的整数表示,例如 49。

要逐行读取文件,您可以使用以下内容(如此处http://www.programcreek.com/2011/03/java-read-a-file-line-by-line-code-example/ 所述):

File file = new File("C:\\file.txt");

FileInputStream fis = new FileInputStream(file);

//Construct BufferedReader from InputStreamReader
BufferedReader br = new BufferedReader(new InputStreamReader(fis));

String line = null;
while ((line = br.readLine()) != null) {
    // convert to integer
    Integer a = Integer.parseInt(line);
}

【讨论】:

    【解决方案2】:

    我能想到的一个快速解决方案是将字符串转换为数字,然后根据需要进行拆分。虽然它只是一个想法,但可以通过多种方式完成

    给你一个快速的link

    如果您在那之后需要帮助,我可以更具体。

    【讨论】:

      【解决方案3】:

      “当将它们转换为整数时”如何将 char 转换为 int? (请记住,char 已经是 int)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-08-09
        • 1970-01-01
        • 1970-01-01
        • 2013-06-12
        • 1970-01-01
        • 2023-03-23
        • 1970-01-01
        相关资源
        最近更新 更多