所以我的程序读入一个文件并显示它很好,但当我反转它时,它只显示在一行上。
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);
我评论了反向声明,但确实如此。当我读入文件并显示它时,它可以工作,并且它有空格和新线,它们应该是,但是当它被反转时,它会显示在一条很长的单行上。
任何帮助都将不胜感激。
答案 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");
}