永发信息网

JAVA输入数组排列问题

答案:2  悬赏:60  手机版
解决时间 2021-07-18 21:28
  • 提问者网友:鐵馬踏冰河
  • 2021-07-17 23:11

代码如下:

package array;
import java.util.*;
public class Main {
public static void main(String[] args) {
System.out.println("请输入10个整数:");
Scanner i=new Scanner(System.in);
int shu[];
int plame = 0;
shu=new int[10];
for(int n=0;n<10;n++)
{
shu[n]=i.nextInt(10);
}
System.out.println("输出的顺序为:");
for(int z=0;z<10;z++)
{
for(int j=0;j<10;j++)
{
if(shu[j]>shu[j+1])
{
{plame=shu[j];shu[j]=shu[j+1];shu[j+1]=plame;}
}
System.out.print(" "+shu[j]);
}
}
}
}

我主要是输入10个整数 进行又大到小的排列

但是总是提示

run:
请输入10个整数:
1 2 3 4 5 6 7 8 9 0
输出的顺序为:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
at array.Main.main(Main.java:20)
1 2 3 4 5 6 7 8 0Java Result: 1
成功生成(总时间:4 秒)

为什么呢?

最佳答案
  • 五星知识达人网友:鱼芗
  • 2021-07-18 00:12

//给你改下,首先是数组排序(即冒泡排序法,这里是升序):


for(int z=0;z<9;z++)
{
for(int j=0;j<9-i;j++)
{
if(shu[j]>shu[j+1])
{
{plame=shu[j];shu[j]=shu[j+1];shu[j+1]=plame;}
}
}
}


//排好序后就输出:


System.out.print("输出的顺序为:");


for(int z = 0; z < 10; z++)
{
System.out.print(shu[z]+"\t");
}

全部回答
  • 1楼网友:持酒劝斜阳
  • 2021-07-18 01:50

数组越界了

在for(int j=0;j<10;j++)中,有if(shu[j]>shu[j+1])

当j=9时就会访问shu[10],此时造成了数组越界

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯