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

变量声明位置不同而已,怎么输出不同的结果啊?困扰

 public void sort(int[] scores){

    Arrays.sort(scores) ;

     int num=0;

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

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

          continue;

      }

      num++;

      if(num>3){

          break;

      }

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

  }

    }

 public void sort(int[] scores){

    Arrays.sort(scores) ;

     

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

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

          continue;

      }

     int num=0

      num++;

      if(num>3){

          break;

      }

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

  }

    }

这两个代码我只是把int num=0放的位置不同,怎么输出的不一样啊,前者有3个数,后者有5个数

正在回答

3 回答

只出5个数是因为数组里的符合条件的都已经遍历完了。其他如上。

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

简单来说,

第一种num是在循环语句for之外定义,你循环一次,它自增一次,根据条件限制,最多它不能超过3

第二种num你把它定义在循环语句for内,那么你循环一次,它自增后又被你定义为0了,无限num=0......

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

第一种写法是对的,求出最后三位.

第二种有两个问题:

1.第二种代码,你的int num=0后面没加分号.

2.先看for语句 (事实上这三个肯定是正数)

第一次循环:最后一位元素---大于0---执行判断if条件---(不满足)即在0到100范围内---跳出if---定义num=0且自增(此时num=1)---再判断if(num大于3吗?)(不满足)跳出---输出scores[scores.length-1](即倒数第一个元素,最大值)-->然后执行i--

第二次循环(问题在这里):,现在开始第二次循环---倒数第二个元素---大于0---执行判断if条件---(不满足)即在0到100范围内---跳出if---《定义num=0......》《之前第一次循环后num已经自增为1,这里又重新定义为0是干嘛的?只出5个数,没有无限循环已经很幸运了~~》


最后两行才是你的症结所在.

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

举报

0/150
提交
取消

变量声明位置不同而已,怎么输出不同的结果啊?困扰

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