繁体   English   中英

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的情况下获得准确的输出。

您的实施有四个问题:

  • 你不要一直到零,
  • 你在循环中的每个打印输出后放置一行结束,
  • 循环结束后,您不打印“尾部”结果,并且
  • 在循环中打印后,您不会清除result

修复这些问题将为您提供正确的输出( 演示 )。

尝试

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);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM