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

输出结果个数

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.input(scores);
    }
    
    //定义方法完成成绩排序并输出前三名的功能
    public void input(int[] scores)
    {
        Arrays.sort(scores);
        int num=0;
         for(int i=scores.length-1;i>=0;i--)
         {
             if(scores[i]>0&&scores[i]<100)
                num++;
             if(num<3)
                System.out.println(scores[i]);
         }
    }
}
要输出三个成绩呢  为啥我觉得应该是num<=3,变量跟踪也觉得是这样啊


正在回答

3 回答

你初始化的num=0 这 if判断3次  num=0 ,1 , 2 就会输出前3的成绩 改成num<=3 则会输出四个成绩!

你可以初始化num=1 if(num<=3),这样就是3个成绩了!

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

天启之魂

不好意思 刚才没仔细看代码 你代码有问题 我回答错了
2015-08-05 回复 有任何疑惑可以回复我~
#2

想的美但长得丑 提问者 回复 天启之魂

哪块有问题啊
2015-08-05 回复 有任何疑惑可以回复我~
#3

想的美但长得丑 提问者 回复 天启之魂

发现了 我那个if条件表达式也有问题
2015-08-05 回复 有任何疑惑可以回复我~

import java.util.Arrays;

public class HelloWorld {

    public static void main(String[] args) {

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

     HelloWorld hello=new HelloWorld();

     hello.input(scores);

    }

  public void input(int[] scores) {

        Arrays.sort(scores);

        int num=0;

         for(int i=scores.length-1;i>=0;i--){

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

                num++;

             if(num<=3)

                {System.out.println(scores[i]);}

            }

         }

    }

}

代码改成这样 两个if 改成镶嵌式 第一个if 成立时再执行第二个if 就没问题了

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

不应该是 判断119时 num+1=1;91时等于2;89时等于3吗

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

天启之魂

应该是判断119是 if 不成立 什么都不执行 进行下个元素的判断
2015-08-05 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

输出结果个数

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