为了账号安全,请及时绑定邮箱和手机立即绑定

一直不对,也不报错

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

为什么一直不对

正在回答

4 回答

错在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]);

}

希望对你有帮助。


1 回复 有任何疑惑可以回复我~

已经找到办法了。。因为数组新数组的序号循环里,定义的长度是score的长度所以要-1,谢谢大家

0 回复 有任何疑惑可以回复我~

//定义方法完成成绩排序并输出前三名的功能

    

    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,(不清楚需不需要这一步) 。 然后 从最后一个元素开始遍历三次。

0 回复 有任何疑惑可以回复我~

Arrays.sort()  是 从小往大排序 所以 nums[0] = -23, nums[1] = 52, nums[2] = 64,  for的时候 从最后一个元素开始 ,并且把 >100 和 <0的成绩要剔除掉

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

一直不对,也不报错

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信