找不到出错原因,求大神指点

The_Other_Shore 2016-04-06 03:48:36
import java.util.Scanner;
public class Args {
public static void main(String[] args){
Scanner in=new Scanner(System.in);
int size=10;
int[] a=new int[size];
for(int i=0;i<a.length;i++){
a[i]=in.nextInt();
}
print(a);
selectionSort(a);
print(a);
in.close();
}
private static void selectionSort(int[] a){
for(int i=0;i<a.length;i++){
for(int j=i+1;i<a.length;j++){
if(a[j]<a[i]){
int t=a[i];
a[i]=a[j];
a[j]=t;
}

}
}
}

private static void print(int[] a){
for(int i=0;i<a.length;i++){
System.out.print(a[i]+" ");
}
System.out.println();
}
}

报错信息:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
at hello.Args.selectionSort(Args.java:19)
at hello.Args.main(Args.java:12)
...全文
182 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
因为你第二个循环里出现了a[j],但是又写了j=i+1, 所以当i为最大9的时候,a[j]是a[10],数组越界抛出异常,把第二个for循环里改成j<a.length就好了
jjfly999 2016-04-07
  • 打赏
  • 举报
回复
for(int i=0;i<a.length;i++){ for(int j=i+1;i<a.length;j++){ 这里明显错了,第二个循环初始条件是j = i +1;判断条件是 i< a.length, 所以数组越界异常: ArrayIndexOutOfBoundsException 1楼正解,中间判断条件改成 j < a.length 就好了,试试吧
ZhiyouWu 2016-04-07
  • 打赏
  • 举报
回复
楼上+1楼正解
小溪a 2016-04-06
  • 打赏
  • 举报
回复
for(int j=i+1;i<a.length;j++){ 改成i<a.length-1,因为你把j赋值为i+1会出现j=a.length的情况,所以数组越界
  • 打赏
  • 举报
回复
数组越界问题,应该是楼上说的吧,没有验证
vssandv 2016-04-06
  • 打赏
  • 举报
回复
for(int j=i+1;i<a.length;j++){ i改成j

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧