反向字符串程序

时间:2011-11-11 17:16:50

标签: java string reverse

我用C ++编写了一个简短的String反向程序。我决定用Java编写它,所以我做到了。但是,一旦我完成了程序的编写,我遇到了一些我试图修复但无法解决的错误。其中一个错误是ArrayOutOfBounds异常。请帮我修复错误。 C ++程序运行良好。下面是Java代码。请注意,我不想使用内置功能。<​​/ p>

import java.util.Scanner;

public class Main{
    public static void main(String[] args){
      Scanner scan = new Scanner(System.in);
      String word;
      int i = 0;
      boolean inp = true;
      System.out.println("Enter one or more words to be reversed:");
      word = scan.nextLine();
      char wordArray[] = word.toCharArray();
      while(wordArray[i]!='\0')
          i++;
      while(inp == true){
          i--;
          System.out.println(wordArray[i]);
          if(i==0){
              System.out.println();
              break;
          }
        }
     }
  }

4 个答案:

答案 0 :(得分:8)

Java字符串中没有空终止字符;他们有一个length()方法来确定长度。

此外,while循环更具惯用性:

while (true) {
    ...
}

或者作为一个简单的for循环。

答案 1 :(得分:2)

这是另一种可能性,也许更简单:

public String reverse(String str) {
    char[] chars = str.toCharArray();
    int n = chars.length;
    for (int i = 0; i < n/2; i++) {
        char tmp = chars[i];
        chars[i] = chars[n-i-1];
        chars[n-i-1] = tmp;
    }
    return new String(chars);
}

虽然您提到您不想使用内置函数,但最惯用的方式是:

public String reverse(String str) {
    return new StringBuilder(str).reverse().toString();
}

答案 2 :(得分:0)

java中的

字符串不一定是以null结尾的,你应该使用String.length()方法来查明它有多长。

答案 3 :(得分:0)

Java字符串不是以零结尾的,因此从字符串创建的字节数组也不是。您使用循环来确定数组的长度,但该循环没有找到值为0的字节,因此它超出了范围。请改用word.length()

第二件事:您使用System.out.println打印角色 - 在每个角色后插入一个换行符。这是为了吗?