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

有人吗哪里错了

import java.util.Arrays;

public class HelloWorld {

    

    //完成 main 方法

    public static void main(String[] args) {

        //定义一个成绩数组

        int [] scores = {89,-23,64,91,119,52,73};

        //创建对象 Hello

        HelloWorld hello = new HelloWorld();

        //调用方法 sort ,并把方法存放在数组nums

        int [] nums=hello.sort(scores);

        //调用Arrays.sort方法排序成绩

        Arrays.sort(nums);

        //输出排序后的有效成绩

        System.out.println(nums);

        

        

    }

    

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

    public int[] sort(int[] scores ){

        //定义一个数组

        int [] nums;

        //通过遍历数组来检查成绩的有效性

        for(int i = 0; i<scores.length;i++){

            if(scores[i] > 0 && scores[i] < 100){

                //满足条件则保存在数组nums

                int nums  = scores[i];

            }

            //返回数组nums

            return nums;

        }

        

    }

    

    

    

    

    

    

    

    

    

}


正在回答

4 回答

问题一:

//满足条件则保存在数组nums

                int nums  = scores[i];

这里你的int nums只是定义了一个整数,而不是整形数组,所以首先应该把'int nums'改为:

int[] nums

问题二:

//满足条件则保存在数组nums

                int[] nums  = scores[i];

分析:在这里,你还没有定义好一个数组就直接赋值了,所以肯定会报错。

问题三:

//输出排序后的有效成绩

        System.out.println(nums);

分析:你在这里没有使用toString将nums转化成字符串就没法正确输出,除非你遍历数组然后一个一个输出,但这样比较麻烦,也不符合你原本的意图

建议:因为想要定义一个数组,你要么直接把值写进去,要么先定义好数组长度,然后赋值。但是在这里你不知道上一步舍去了多少个值,然后又剩下多少个值,那怎么定义数组长度?我有一个建议:

首先在这里:

int [] scores = {89,-23,64,91,119,52,73};

加上一句,定义整数o为已知数组长度:

int o=scores.length;

紧接着使o减到符合条件的值的个数:

   for (int f:scores){

        if(f<0||f>100){

        o--;}}

然后把o传入方法sort

int [] nums=hello.sort(scores,o);

后面改成:

public int[] sort(int[] scores ,int o);//接受o

int [] nums=new int[o];//定义数组长度

再后面:

for(int i = 0, h=0; i<scores.length;i++){//为了防止数组长度越界不能将i用于给nums赋值,所以额外定义了一个h

            if(scores[i] >0 && scores[i] < 100){

                nums[h]=scores[i];

                h++;}//只有当nums得到赋值时h才会自增1,确保h不越界

最后输出的时候注意使用toString:

System.out.println(Arrays.toString(nums));


debug完成,这是输出结果:

[52, 64, 73, 89, 91]


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

public static void main(String[] args) {
        //定义一个成绩数组
        int [] scores = {89,-23,64,91,119,52,73};
        //调用Arrays.sort方法排序成绩
            HelloWorld hello = new HelloWorld();

            hello.sort(scores);

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

    public  void sort(int[] scores ){
        Arrays.sort(scores);
        int count=0;
        System.out.println("前三名成绩是:");
        //通过遍历数组来检查成绩的有效性   
        for(int i =scores.length-1;i>=0;i--){
            //输出前三名成绩
           if(count<=3) {   
               if(scores[i] > 0 && scores[i] < 100){
                   System.out.println(scores[i]);
               }
               count++;
           }
           
        }

    }

这是我对你的方法进行修改后的

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

数组没有初始化 没有定义长度 好像没办法赋值

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

数组赋值就有问题


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

慕仔7678733 提问者

怎么改?
2017-08-01 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

有人吗哪里错了

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