簡體   English   中英

Java逆行比單詞比字母的單詞

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM