我正在尝试对txt文件执行以下操作,1-反转该行,使最后一行是第一行,依此类推,2-反转单词,即行中的最后一个单词是第一行,3-翻译单词的字母。
public static void main(String[] args) throws FileNotFoundException {
ArrayList<String> revStr = new ArrayList<String>();
Scanner input = new Scanner(new File("mobydick-1.txt"));
while (input.hasNextLine()){
revStr.add(input.nextLine());
}
for(int i = (revStr.size()-1); i >=0 ; i--){
String ar[]=revStr.get(i).split(" ");
for(int j = (ar.length-1); j >=0; j--){
stringReverse(ar[j]);
System.out.print(ar[j]+ " ");
}
System.out.println(" ");
}
}
private static String stringReverse(String string) {
if (string == null || string.length() == 0) {
return string;
}
return stringReverse(string.substring(1)) + string.charAt(0);
}
有什么建议吗?到目前为止,我只能做到前2,我在3号时偶然发现了正在翻转字母的字母 输入
MOBY DICK; OR THE WHALE
by Herman Melville
CHAPTER 1
Loomings.
输出
.sgnimooL
1 RETPAHC
ellivleM namreH yb
ELAHW EHT RO ;KCID YBOM
答案 0 :(得分:0)
您需要做的是反向读取文件,即从文件中的最后一个字符开始。
尝试使用ReversedFileReader from apache.commons。或者,如果您不想使用外部API,可以使用JDK中的RandomAccessFile。
答案 1 :(得分:0)
如果你想继续使用你的算法,最好使用StringBuilder
然后用于反转字符串,你可以使用StringBuilder.reverse()
或制作一个像下面这样的简单函数来为你做任何反转。
String stringReverse(String string) {
if (string == null || string.length() == 0) {
return string;
}
return stringReverse(string.substring(1)) + string.charAt(0);
}
答案 2 :(得分:0)
错误发生在
for(int j = (ar.length-1); j >=0; j--){
stringReverse(ar[j]);
System.out.print(ar[j]+ " ");
}
一定是
for(int j = (ar.length-1); j >=0; j--){
ar[j]= stringReverse(ar[j]);
System.out.print(ar[j]+ " ");
}