package aa;import java.util.Arrays;public class chji { public static void main (String[] args) { int[] scores=new int[]{89,-23,64,91,119,52}; chji T=new chji(); int[] paimin=T.paixu(scores); for(int i=0;i<3;i++) { System.out.println(paimin[i]); } } //定义方法完成成绩排序并输出前三名的功能 public int[] paixu(int[] nums) { Arrays.sort(nums); int a[]= new int[nums.length]; for (int k=0,i=nums.length;i>0;i--) { a[k]=nums[i]; k++; } return a; }}
为什么一直不对
错在i = nums.length;
应该为i = nums.length-1;
而且你排序方法调用后,不需要再把数组中的值倒序赋值给新的数组,直接循环倒着输出后三位即可;
例如:
public void num_sort(int[] nums) {
Arrays.sort(nums);
System.out.println("前三名的成绩是:");
for(int i=1;i<4;i++) {
System.out.println(nums[nums.length-i]);
}
希望对你有帮助。
已经找到办法了。。因为数组新数组的序号循环里,定义的长度是score的长度所以要-1,谢谢大家
//定义方法完成成绩排序并输出前三名的功能
public void getRank(int[] scores){
int[] aux = new int[scores.length];
for(int i = 0; i < scores.length; i++){
if(scores[i]>=0 && scores[i]<=100)
aux[i] = scores[i];
else
aux[i] = 1;
}
Arrays.sort(aux);
for(int j = aux.length-1; j > aux.length-4; j--)
System.out.println(aux[j]);
}
我新建了一个数组存放去掉不符合的成绩,不符合的,,我给默认设为1,(不清楚需不需要这一步) 。 然后 从最后一个元素开始遍历三次。
Arrays.sort() 是 从小往大排序 所以 nums[0] = -23, nums[1] = 52, nums[2] = 64, for的时候 从最后一个元素开始 ,并且把 >100 和 <0的成绩要剔除掉