为什么我的文件只在反转后显示在一行?

时间:2013-11-19 04:17:59

标签: java

所以我的程序读入一个文件并显示它很好,但当我反转它时,它只显示在一行上。

import java.io.*;
public class palinPractice
{
  public static void main(String args[]) throws IOException
  {
    BufferedReader br = new BufferedReader(new FileReader("data.txt"));
    PrintWriter    pr = new PrintWriter(new FileWriter("JCdata.txt"));
    String rec;
    String temp = "";

    while((rec = br.readLine()) != null)  // Reads Through
    {
      System.out.println(rec);
      /*for(int i = rec.length()-1;i>=0;i--)  // Reverse
      {
        temp = temp + rec.charAt(i);
      }*/
    }
    System.out.println(temp);

我评论了反向声明,但确实如此。当我读入文件并显示它时,它可以工作,并且它有空格和新线,它们应该是,但是当它被反转时,它会显示在一条很长的单行上。

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:0)

您的System.out.println(rec)位于while循环中,rec正在重新分配给br.readLine()。每次阅读新行时,您要做的第一件事就是打印出来。

与此同时,如果您取消注释反向内容,则会将temp构建到整个文档的大反转字符串中,并等到结束while循环以打印任何内容。

有两种可能的解决方案,具体取决于您打算如何处理。

如果您不需要保留总反转值,则可以一次打印一条反转线。将while循环的主体更改为如下所示:

while((rec = br.readLine()) != null) {
    System.out.println(rec);
    temp = "";
    for(int i = rec.length()-1;i>=0;--i) {
        temp = temp + rec.charAt(i);
    }
   System.out.println(temp);
}

第二种选择是建立一个大字符串并在最后一次打印所有字符串。如果你想这样做,你将不得不附加一些'\n'个字符。

因此,在你的for循环后,在while循环的最后一行反转该行后,添加以下行:

temp = temp + System.getProperty("line.separator");

现在,在读完每一行并将其反转后,在读取下一行之前在字符串中添加换行符。当您完成并退出while循环后,单个System.out.println将完成所有操作。

看起来像这样:

while((rec = br.readLine()) != null) {
    System.out.println(rec);
    for(int i = rec.length()-1; i>=0; --i) {
        temp = temp + rec.charAt(i);
    }
    temp = temp + System.getProperty("line.separator");
}
System.out.println(temp);

答案 1 :(得分:0)

尝试

while((rec = br.readLine()) != null)  // Reads Through
{
  System.out.println(rec);
  for(int i = rec.length()-1;i>=0;i--)  // Reverse
  {
    temp = temp + rec.charAt(i);
  }
  temp = temp + System.getProperty("line.separator");
}