【问题标题】:Reading multiple lines from FileReader从 FileReader 读取多行
【发布时间】:2014-03-18 13:42:18
【问题描述】:

*编辑,因为除了 Scanner 类我不能使用任何东西。

我正在阅读一个康威生命游戏程序的文本文件,看起来像这样:

------------------------------
------------------------------
------------------------------
------------------------------
------------------------------
------------------------------
------------------------------
------------------------------
------------------------------
------------------------------
------------------------------
------------------------------
------------------------------
-------------X-X-X------------
--------------XXX-------------
-------------X-X-X------------
------------------------------
------------------------------
------------------------------
------------------------------
------------------------------
------------------------------
------------------------------
------------------------------
------------------------------
------------------------------
------------------------------
------------------------------
------------------------------
------------------------------

我正在尝试将所有字符读入单个字符串变量,然后将字符串解析为 char 数组。我将如何修复我的 FileReader 代码以读取所有行,并且在到达一行末尾后不停止?

    inputfile = JOptionPane.showInputDialog ("Where is the input file?   Ex:                   C:\\users\\public\\desktop\\input.txt ");
    Scanner input = new Scanner (new FileReader(inputfile)); 
    String values = null;
    while(input.hasNextLine()){
    values = input.next();
    }
    System.out.println(values);

【问题讨论】:

  • 您是否尝试打印input 的值 - 如果您尝试过,您会意识到这是一个短字符串,而不是您的想法。部分基本调试技术。强烈建议您学习使用调试器,以便您可以单步执行代码并检查变量。很多像这样的问题都会得到解决...

标签: java text input


【解决方案1】:

input 是文件的路径(用户在弹出窗口中输入)。不是文件的内容。

这是一种逐行读取文件的方法

Java read line from file

【讨论】:

  • 我不能使用 FileInputStream 等...,因为它不是作业的一部分。我决定使用 Scanner 类将值存储到字符串中,但 FileReader 由于中断而在第一行之后停止输入值。有没有办法告诉 FileReader 在行结束后继续?
  • 您可以改为在循环中读取行并将每一行附加到 StringBuilder(当前您在每次迭代中替换“values”的值。因此在这种情况下您只会得到最后一行)。我假设您的电路板尺寸是恒定的。还尝试在下次不删除代码的情况下将您的编辑附加到问题的末尾,或者更好地使用新代码创建一个新问题。目前看来我给你一个不同的答案
【解决方案2】:

请注意,您每次都覆盖 value 在您的循环中(您会这样做 value = input.next();)。我认为您的意思是将所有行加在一起。循环完成后,值 String 只包含读取的最后一行,因此这是打印到System.out 的唯一行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-01
    • 2011-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-25
    • 2017-12-01
    相关资源
    最近更新 更多