该程序应该要求用户输入一个字符串然后程序将反转并显示它,但代码只返回第一个字母
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
答案 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));