Java的反行比单词的字母还多

Java的反行比单词的字母还多,java,Java,我试着对一个txt文件做如下操作,1-反转行,使最后一行是第一行,依此类推,2-反转单词,使行中的最后一个单词是第一个,3-反转单词的字母 public static void main(String[] args) throws FileNotFoundException { ArrayList<String> revStr = new ArrayList<String>(); Scanner input = new Scanner(n

我试着对一个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);
   }
输出

.sgnimooL

1 RETPAHC


ellivleM namreH yb

ELAHW EHT RO ;KCID YBOM

您需要做的是反向读取文件,即从文件中的最后一个字符开始读取


尝试使用。或者,如果您不喜欢使用外部API,您可以使用JDK。

如果您想继续使用您的算法,最好使用
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]+ " ");   
 }

我已经尝试在循环中实现了一个反向方法,但它仍然没有反转字母它根本没有改变结果,我正在尝试在我打印单词之前实现它。噢,谢谢,现在很好,有什么原因你必须在ar[j]上实现吗?为什么我们必须使用ar[j]两次?您应该将方法的返回值赋给一个变量。我在这里用了同样的ar[j]。。您可以使用任何其他字符串变量并打印相同的字符串
 for(int j = (ar.length-1); j >=0; j--){
         ar[j]= stringReverse(ar[j]);
         System.out.print(ar[j]+ " ");   
 }