[英]Java reverse line than words than letters of the word
我正在嘗試對 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
您需要做的是反向讀取文件,即從文件中的最后一個字符開始。
嘗試使用apache.commons 中的 ReversedFileReader 。 或者,如果您不喜歡使用外部 API,則可以使用 JDK 中的RandomAccessFile 。
如果你想繼續使用你的算法,最好使用StringBuilder
然后反轉字符串,你可以使用StringBuilder.reverse()
或創建一個像下面這樣的簡單函數來為你做任何反轉。
String stringReverse(String string) {
if (string == null || string.length() == 0) {
return string;
}
return stringReverse(string.substring(1)) + string.charAt(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]+ " ");
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.