字符串索引超出数组

时间:2018-04-08 14:56:14

标签: java arrays

我正在尝试创建一个数组,从字符串中收集char并将它们向后放置到自身,然后将单词返回到String中。

当我尝试运行代码时,它告诉我“字符串索引超出范围:-1”。我已经尝试了一切,无法弄清楚我的代码中的问题所在。这是代码。

public class april{
  public static void main(String [] args){
    System.out.println("What do you want backwards?");
    System.out.println("Your new word is " + reverse(IO.readString()));
  }

  public static String reverse(String original){
    char [] letters = new char [original.length()];
    char [] opp = new char [original.length()];
    char c= 'a';
    char d= 'a';
    String word= " ";
    String opposite= " ";

    for (int x=0;x<original.length();x++){
      c = original.charAt(x);
      d = original.charAt(x);
      letters[x]= c;
      if (x!=0){
        d = original.charAt(-x-1);
        opp[x]=d;
      } else {
        d = original.charAt(-1);
        opp[0]= d; 
      }
      word += letters[x];
      opposite += opp[x];
    }
    return opposite;
  }
}

1 个答案:

答案 0 :(得分:1)

反转字符串要简单得多。请考虑以下事项:

public static String reverse(String original) {
    char[] reverse = new char[original.length()];
    for (int i = 0; i < reverse.length; i++) {
        reverse[i] = original.charAt(original.length() - i - 1);
    }
    return new String(reverse);
}

您需要做的就是在一个方向上进行迭代,并在每次通过时在另一个方向上使用相反的字符。请注意-1,因为original.length()将为您提供基于1的索引。