String Index Out of Bounds java中的异常错误

时间:2012-10-12 17:01:06

标签: java

我制作了一个程序来反转输入字符串的单词 有一个错误代码:

                   Exception in thread "main" java.lang.StringIndexOutOfBoundsException:String index out of range: 17
                   at java.lang.String.charAt(String.java:695)
                   at Rev.main(Rev.java:14)

主程序代码是:

import java.io.*;
class Rev
{
 public static void main(String args[])throws IOException
  {
    BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
    System.out.println("Enter String");
    String a=br.readLine();
    a=" "+a+" ";
    int x=a.length();
    String b;
    for(int z=a.length()-1;z>=0;z--)
    {
     if (a.charAt(z)==' ')
     {
      b=a.substring(z,x);
      System.out.print(b+" ");    
      a=a.replace(b,"");
     }
    }
  }
     

}

5 个答案:

答案 0 :(得分:1)

如果Java专业人员需要解决您的问题,他只需要几行:

final List<String> words = Arrays.asList(input.split(" "));
Collections.reverse(words);
for (String word : words) System.out.print(word + " ");
System.out.println();

如果你这样做是为了练习并希望自己实现它,你仍然可以考虑使用相同的基本思想。例如,遍历您的字符串并将空格的所有位置收集到List<Integer>。然后使用input.substring(list.get(i), list.get(i-1))向后浏览该列表。

答案 1 :(得分:0)

也许你应该尝试:

int x=a.length()-1;

子字符串导致错误

答案 2 :(得分:0)

为什么不按空格分割输入并存储在数组中并反转数组?

答案 3 :(得分:0)

您知道您指定的字符串索引是错误的。你知道错误发生在哪里。添加System.out.println调用以在错误语句之前以及代码中的其他关键点打印sting索引和字符串的长度。调试问题。

答案 4 :(得分:0)

我知道这不是你问题的答案,但为什么不尝试将StringBuilder或StringBuffer方法称为reverse()

StringBuilder sb = new StringBuilder("Hello");

sb.reverse();