我要做的是读取一个文件并使用StringBuilder
来反转文件内部的一个字符串单词的顺序。
我让它在while循环中工作但是当我将它添加到方法时它只打印出原始文件文本。
这是有效的代码;
// File being read....
while ((currentString = s.next()) != null) {
a.insert(0, currentString);
a.insert(0," ");
}
打印
line. this reads it hope I file. this read will program This
以下代码不起作用;
// File being read....
while ((currentString = s.next()) != null) {
System.out.print(reverse(currentString));
}
方法
public static StringBuilder reverse(String s){
StringBuilder a = new StringBuilder();
a.insert(0, s);
a.insert(0," ");
}
打印
This program will read this file. I hope it reads this line.
我做错了什么?
答案 0 :(得分:2)
每次致电StringBuilder a
时,您都会创建新的reverse()
。您需要保留对StringBuilder
的引用,以便正确地将所有字符串附加到它。
// File being read....
StringBuilder a = new StringBuilder();
while ((currentString = s.next()) != null) {
reverse(a, currentString);
}
// ...
public static void reverse(StringBuilder a, String currentString) {
a.insert(0, s);
a.insert(0," ");
}
答案 1 :(得分:2)
您正在创建一个新的StringBuilder并在您阅读每个单词时进行打印。 您需要构建字符串,然后在所有读数后打印。 如果你想在方法中反转但是读取方法之外的每个单词,那么你可以将当前的StringBuilder提供给你的反向方法,如
StringBuilder total = new StringBuilder();
while ((currentString = s.next()) != null) {
reverse(total, currentString);
}
System.out.print(currentString);
public static void reverse(StringBuilder total, String s) {
total.insert(0, s);
total.insert(0, " ");
}