2014-02-18 49 views
0

*编辑为我无法使用Scanner类以外的其他任何内容。从FileReader中读取多行

我读的生命程序的康威的游戏的文本文件看起来像这样:

------------------------------ 
------------------------------ 
------------------------------ 
------------------------------ 
------------------------------ 
------------------------------ 
------------------------------ 
------------------------------ 
------------------------------ 
------------------------------ 
------------------------------ 
------------------------------ 
------------------------------ 
-------------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); 
+0

你有没有尝试打印'输入'的值 - 如果你有,你会意识到这是一个简短的字符串,而不是你在想什么。基本调试技术的一部分。强烈建议您学会使用调试器,以便您可以逐步检查代码并检查变量。像这样的许多问题将被解决...... – Floris

回答

3

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

下面是一行读取文件行

Java read line from file

+0

我不能使用FileInputStream等,因为它不是任务的一部分。我决定使用Scanner类将值存储到一个字符串中,但FileReader因为中断而停止在第一行之后输入值。有没有办法告诉FileReader在行结束后继续? – user3038498

+0

您可以读取循环中的行,并将每行添加到StringBuilder中(目前,您在每次迭代中都将替换'values'的值,因此您只能在这种情况下获得最后一行)。我假设你的电路板尺寸不变。 也试着在你的问题末尾添加你的编辑结束,而不要下次删除你的代码,或者用新代码更好地创建一个新问题。目前看起来我正在给你一个不同的答案 – taytay

0

请注意,您是覆盖在你的循环每次(你做value = input.next();value的方式。我想你的意思是把所有的行加在一起。循环结束后,值String仅包含最后一行读取,因此这是打印到System.out的唯一行。