问答详情
源自:7-1 编程练习

搞不懂啊,想了半天也没搞懂

import java.util.Arrays;

public class HelloWorld {

    

    //完成 main 方法

    public static void main(String[] args) {

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

        HelloWorld hello = new HelloWorld();

        hello.post(scores);

        

    }

    

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

    public void post(int[] nums){

        for(int num:nums){

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

                num = 0;

            }

        }

        Arrays.sort(nums);

        System.out.println("考试成绩的前三名为");

        for(int i=nums.length-1; i>nums.length-4; i--){

            System.out.println(nums[i]);

        }

    }  

}

这里我用了foreach循环,但是怎么数组里面的负数和大于100的数还在啊?看了看别人的代码,也是这样写的啊

提问者:你好吗丶 2015-07-24 22:21

个回答

  • 子木李
    2015-07-24 23:09:07
    已采纳

    楼组,你给num赋值的时候并没有改变数组中的值呀,num只是一个临时变量呢

    如果楼组非要用for each循环的话,可以这样改:

    public void post(int[] nums){
            int j=0;
            for(int num:nums){
                if(num>100 || num<0){
                    nums[j] = 0;
                }
                j++;
            }
            Arrays.sort(nums);
            System.out.println("考试成绩的前三名为");
            for(int i=nums.length-1; i>nums.length-4; i--){
                System.out.println(nums[i]);
            }
        }