当前位置: 代码迷 >> J2SE >> Java有关数组java.lang.ArrayIndexOutOfBoundsException 错误的有关问题
  详细解决方案

Java有关数组java.lang.ArrayIndexOutOfBoundsException 错误的有关问题

热度:80   发布时间:2016-04-24 00:40:22.0
Java有关数组java.lang.ArrayIndexOutOfBoundsException 异常的问题
程序是实现一个纯字母字符串排序,如:sort("acb") 返回"abc".
问题是:
  当测试字符串为“acb”时可以正确显示排序结果,
  当测试字符串为”dbca“时却显示:Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1
  at Sort.sort1(Sort.java:38)
  at Sort.main(Sort.java:9)
请大虾帮忙看看怎么出错了!
现在,源代码如下:
Java code
import java.util.Scanner;public class Sort {    public static void main(String[] args)    {        Scanner sca = new Scanner(System.in);        System.out.println("请输入一个字符串:");        String s = sca.next();        System.out.println("排序前的字符串为: " + s + "\n" +                "排序后的字符串为: " + sort1(s));   }   public static String sort1(String s){   //插入排序     char[] array = s.toCharArray();     for(int i = 1;i < s.length();i++){     char temp = array[i];     int j = i - 1;     //大的字符后移操作     while(array[j] > temp && j >= 0){          array[j + 1] = array[j];     j--;     }    //插入操作    array[j + 1] = temp;    }   StringBuffer ss = new StringBuffer();   ss.append(array);   return ss.toString();  }}



------解决方案--------------------
while(array[j] > temp && j >= 0){
array[j + 1] = array[j];
j--;
}

就这一块有问题啦。跟for循环无关的。
就是循环的时候j可能是负的,所以j>=0要放在前面。
  相关解决方案