纯刚学java,想写一个用数组对一些东西进行排序的程序,然后错了一个小时才写了这玩意出来.
有几个不明白的地方:
①:为什么给数组分配空间的时候要写上"length + 1",否则告诉我线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常:索引3`超出长度3的界限.
②:我写的东西总是不按我的想法实现,被迫更改,只能实现从大到小排列并输出,想要从小到大输出的话只能反着输出,而且还要将数组的循环起点减一才行, 即for(int i = length - 1;i >= 0;i --),否则输出的是"0 1 2 3".
③:大家看看我的代码吧,看看还能怎么补救,或者有更好的写法,让它变得正常一点.
public class Rank {
public static void main(String args[]){
Scanner sc = new Scanner(System.in);
int length =sc.nextInt();
int a[];
a = new int[length + 1];
int item = a[0];
for(int i = 1; i <= length; i ++)
{
a[i] = sc.nextInt();
}
for(int i = 0; i < length; i ++)
{
for(int j = i + 1; j <= length; j ++)//AntiPrintf
{
if(a[i] < a[j])
{
item = a[j];
a[j] = a[i];
a[i] = item;
}
}
}
System.out.println("上大下小()输出 ");
for(int i = 0;i < length;i ++)//Antiprintf
{
System.out.println(a[i]+" ");
}
System.out.println("上小下大()输出 ");
for(int i = length - 1;i >= 0;i --)//AntiAntiprintf
{
System.out.println(a[i]+" ");
}
}
}