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

关于方法中的for循环的问题

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.score(scores);
        
        
        
    }
    
    //定义方法完成成绩排序并输出前三名的功能
    public void score(int[] score1){
        Arrays.sort(score1);
        System.out.println("考试成绩的前三名为:");
        for(int i=score1.length-1,j=0;j<=3;i--,j++){
            if(score1[i]<=100&&score1[i]>=0){
                System.out.println(score1[i]);
            }
        }
    }
    
    
    
    
    
    
    
    
    
}

上面是我的代码

方法中j的初始值设置的是0,循环条件是j<=3,按理说应该输出四次但结果只输出了三次,什么问题?求大神解惑

提问者:IDNW 2017-07-20 21:27

个回答

  • 衔尾蛇
    2017-07-20 22:10:43
    已采纳

    scores={89,-23,64,91,119,52,73} 119大于100,所以你循环四次, if(score1[i]<=100&&score1[i]>=0)这个条件把119过滤掉了,这个写法是错的,应该这样写:


    import java.util.*;

    public class HelloWorld {

    // 完成 main 方法

    public static void main(String[] args) {

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

    HelloWorld hello = new HelloWorld();

    hello.score(scores);

    }

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

    public void score(int[] score1) {

    Arrays.sort(score1);

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

    for (int i = score1.length - 1, j = 0; j < 3; i--) {

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

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

    j++;

    }

    }

    }

    }