2

似乎无法让它发挥作用。试图让它像镜子一样向后读取而不使用缓冲区类。

  public static void main(String[] args) {



   Scanner keyboard = new Scanner(System. in); 

   System.out.println("Enter a phrase:");

   String phrase = keyboard.nextLine();
   String Rphrase;

   int n = phrase.length();
   int r = 0;

   do{
        n--; r++;
    Rphrase[r] = phrase[n];

  }while(n >= 0);


   System.out.println(Rphrase);
4

6 回答 6

1

我提供了 4 种反转字符串输出的方法。

选项1:

只需向后迭代字符串。

for (int i=phrase.length()-1; i>-1; i--) { 
    System.out.print(foo.charAt(i));  
}

选项 2:

如果你想把它放在另一个缓冲区中,你可以这样做:

char[] buffer = new char[phrase.length()];
index = 0;
for (int i=phrase.length()-1; i>-1; i--) { 
    buffer[index++] = foo.charAt(i);  
}

选项 3:

你说你不想使用缓冲区类(我认为你指的是StringBuffer所以我假设你也不想使用StringBuilder)所以这里是你可以如何严格使用字符串(这是相当低效的,因为每次迭代都会构造一个新字符串):

String foo = "";
for (int i=phrase.length()-1; i>-1; i--) { 
    foo += foo.charAt(i);  
}

选项 4:

不过,最有可能更有效的方法是使用StringBuilder

StringBuilder sb = new StringBuilder(foo.length());
for (int i=foo.length()-1; i>-1; i--) {
    sb.append(foo.charAt(i));
}
String reverse = sb.toString();

或者

请参阅此以使用StringBuilder进行非常简单的字符串反转:Reverse a string in Java

于 2013-10-25T22:09:25.300 回答
0

尝试:

public static void main(String[] args) {
    Scanner keyboard = new Scanner(System. in); 

    System.out.println("Enter a phrase:");

    String phrase = keyboard.nextLine();
    String rPhrase = "";
    for (int i = phrase.length() - 1; i >= 0; i--)
        rPhrase += phrase.charAt(i);
    System.out.println(rPhrase);
}
于 2013-10-25T21:53:04.110 回答
0

这就是你需要的。

String reverse = "";
String toReverse = "hello";

for(int i = 0; i<toReverse.length();i++){
    reverse += toReverse.substring(i,i+1);
}

System.out.println(reverse);
于 2013-10-25T21:54:44.887 回答
0

一些提示,而不是完整的解决方案......

您的循环将在 when 再运行一次迭代n = 0,这将导致尝试访问 index -1。所以也许试试n > 0你的条件。

如果字符串为空会发生什么?它还会在进入-1循环之前尝试访问 index 。也许你应该把条件放在开头。

String不支持[]运营商 - 尝试:

Rphrase += phrase.charAt(n);

在这种情况下,您不妨摆脱r.

于 2013-10-25T21:57:00.910 回答
0

您必须减量,以便它可以将其值读回前面

for (int i = name.length() - 1, j = 0; i >= 0; i--, j++) {
newName[j] = name.charAt(i); enter code here

}

    System.out.println(newName); 

}

于 2013-10-25T22:59:29.950 回答
0

只需使用 StringBuilder.reverse

str = new StringBuilder(str).reverse().toString();
于 2013-10-25T23:04:41.530 回答