永发信息网

JAVA输入数组排列问题

答案:2  悬赏:60  手机版
解决时间 2021-07-18 21:28

代码如下:

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 秒)

为什么呢?

最佳答案

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


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");
}

全部回答

数组越界了

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

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

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
男女之间在乎年龄的考验吗
什么牌子的汽车最讨厌别人摸?
几天更新一集?
我是1994年6月17日出生的,请问我以后的命运
人死了之后到底要去哪里!
谁有李智安《中毒的爱情》MP3的空间背景音乐
Linux系统玩游戏真的不行么?板裁集成显卡和n
帮忙解下脑筋急转弯
电脑的显示器需要搞保护膜吗?有什么用?
《蜗居》好看么?讲的什么?
人生的价值方面
网络上传音乐的连接地址
三国合区有什么条件改变了
怎样判断虎皮鱼的繁殖期
我过生日,男友没请假陪我,而是去上班拉,是不
推荐资讯
给推荐几部好看点的恐怖片、
100米要注意那些动作跑更快?
我莫名地感到恐慌,害怕,无助,怎么办?
飞信一个月多少钱啊?
江苏镇江怎么去四川方便
保安领班年总结
赵云精元要多少W
安徽淮南自考那里有书卖得便宜
``去湖南``长沙```旅游```应去那里``玩好呢
云轩阁怎么不能下载小说了啊?有免费下载小说
赞美花仙子诗句有哪些,来描写荷花淀中亭亭玉
请问the desire is clarity是什么意思
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?