Java 中的字符串单词反转给出了错误的结果?

String word reverse in Java giving wrong result?

这是我的代码,用于在不使用任何 API 的情况下打印 Java 中反转的字符串字符。但它不能正常工作。谁能帮我更正一下?

public static void main(String args[]) {
    String input = "I am test";
    String result = "";
    for (int i = input.length() - 1; i > 0; i--) {
        Character c = input.charAt(i);
        if (c != ' ') {
            result = c + result;
        } else {
            System.out.println(result + " ");
        }
    }
}

它给出输出 "test amtest",而输出应该是 "test am I"。

请帮助我在不使用预定义方法或 API 的情况下获得准确的输出。

你的实现有四个问题:

  • 你不会一路下降到零,
  • 您在循环中的每个打印输出后放置了一个行尾,
  • 循环结束后不打印"tail"结果,
  • 你在循环打印后没有清除result

解决这些问题将为您提供正确的输出 (demo)。

尝试

public static void main(String args[]) {
    String input = "I am test";
    String result = "";
    int start=input.length()-1;
    for (int i = input.length()-1; i >=0; i--) {
        Character c = input.charAt(i);
        if (c == ' ') {
            for(int j=i+1;j<=start;j++)
                result +=input.charAt(j);
            result+=" ";
            start=i-1;
        }
        else if (i==0)
        {
            for(int j=0;j<=start;j++)
                result +=input.charAt(j);
        }
    }
    System.out.println(result);
}//It is giving output as test amtest
//output should be : test am I
public static void main(String args[]) {
    String input = "I am test";
    String result = "";

    String[] frags = input.split(" ");
    for (int i = frags.length - 1; i >= 0; i--) {
        System.out.print(frags[i] + " ");
        }
    System.out.println();
 }

你也可以尝试递归 -

public static void main(String args[]) {
    String input = "I am test";
    List<String> listOfString = Arrays.asList(input.split(" "));

    System.out.println(reverseString(listOfString));

}

private static String reverseString(List<String> input) {
    int n = input.size();
    String result = "";
    if(input.isEmpty()){
        return result;
    }

    if(n>1){
   /*adding last element with space and changes the size of list as well
        test + " " + [am, I] 
        test + " " + am + " " + [I]*/

        result = input.get(n-1) + " " + reverseString(input.subList(0, n-1));
    }else{
        result = input.get(n-1);
    }               
    return result;

}

希望对您有所帮助。

public static void main(String args[]){
    String input = "I am test";
    String result="";
    for(int i=input.length()-1;i>=0;i--){
        result=result+input.charAt(i);
    }
    System.out.println(result);
}