Java反向行比单词而不是单词的字母

时间:2017-10-23 03:47:59

标签: java

我正在尝试对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

3 个答案:

答案 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]+ " ");   
 }