反向字符串代码错误

时间:2013-12-20 14:13:38

标签: java string reverse

该程序应该要求用户输入一个字符串然后程序将反转并显示它,但代码只返回第一个字母

import java.util.*;

public class ReverseString {

    public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    System.out.print("Enter a String: ");
    String s = scan.next();

        int x = s.length();

        char c = ' ';
        for(int i=x-1; i>=0;i--){
                c = s.charAt(i);
        }

            System.out.print("The reverse of String " + s + " is ");
            System.out.print(c);

    }
}

输出:

    Enter a String: Welcome
    The reverse of String Welcome is W

5 个答案:

答案 0 :(得分:1)

char c = ' ';更改为String reverse="";,并在每次迭代时将字符附加到其中。

代码中的问题是char c一次只能容纳一个字符。

这样做

 String reverse ="";
 for(int i=s.length()-1; i>=0;i--){
      reverse += s.charAt(i);
 }

 System.out.print(reverse);

答案 1 :(得分:1)

您在每次迭代中覆盖c的值,将其更改为字符串并在循环中添加到

String c = "";
for(int i=x-1; i>=0;i--){
  c += s.charAt(i);
}

答案 2 :(得分:1)

一个字符是一个字母;不是字符串......最简单的方法就是使用像这样的StringBuilder -

public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    System.out.print("Enter a String: ");
    String s = scan.next();

    // int x = s.length();
    // char c = ' ';
    // for (int i = x - 1; i >= 0; i--) {
    //  c = s.charAt(i);
    //}
    StringBuilder c = new StringBuilder(s);
    c = c.reverse();
    System.out.print("The reverse of String " + s + " is ");
    System.out.print(c);
}

或者,如果您想使用当前的方法,您可以(通过一次打印一个字符)这样 -

public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    System.out.print("Enter a String: ");
    String s = scan.next();

    System.out.print("The reverse of String " + s + " is ");
    int x = s.length();
    for (int i = x - 1; i >= 0; i--) {
        char c = s.charAt(i);
        System.out.print(c);
    }
    System.out.println();
}

答案 3 :(得分:0)

如果你想让你的老师笑(或许不是);)

org.apache.commons.lang.StringUtils.reverse(s)

或没有lib:

new StringBuffer(s).reverse().toString();

答案 4 :(得分:0)

更有效的方法:

char[] strArray = s.toCharArray();

int len = strArray.length;
int max = (int)Math.ceil(len / 2.0);

char t;
for (int i = 0; i < max; ++i) {
  t = strArray[i];
  strArray[i] = strArray[len - i - 1];
  strArray[len - i - 1] = t;
}

System.out.println(String.valueOf(strArray));