一直不对,也不报错

来源:7-1 编程练习

Leha

2020-02-13 12:35

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回答

  • weixin_慕婉清4116791
    2020-02-13 18:21:30

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

    }

    希望对你有帮助。


  • Leha
    2020-02-13 14:41:55

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

  • 影贼
    2020-02-13 14:40:38

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

        

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

  • 影贼
    2020-02-13 14:38:03

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

Java入门第一季(IDEA工具)升级版

0基础萌新入门第一课,从Java环境搭建、工具使用、基础语法开始

1165176 学习 · 17581 问题

查看课程

相似问题