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

正在回答

4 回答

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

    public void getArray(int[] scores){

       Arrays.sort(scores);

        int a=0;//用来记录已经输出了多少个

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

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

              //i++;

              continue;

          }

          //这里最好用println,不要用print,这些数挤在一行你都分不出来了。

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

            a++;//在每次输出后都加1

            //if(i>scores.length-4){

            //  break;

            //}

            //直到输出3个就可以退出了

            if(a==3)

                break;

       }

    }


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

 你的错误有3点:

1、第15行,你对for循环的理解有问题。

    for(表达式1;表达式2,表达式3)

    {

        语句.....

    }

    这里表达式2,是用来控制循环满足条件时执行,你理解成满足条件时退出循环,所以你的表达式写成了i<0,应该是i>=0。

2、第17行,i这个变量是用来控制数组的遍历的,你在循环里面最好不要再操作它了,for的表达式3不是已经在每次循环完都减1了么。这行应该去掉,我猜你可能是想记录数组里有多少个数没有打印输出,但你也应该换一个变量啊,别再用i了。而且题目是要输出3个,你记没输出多少个有什么用。你应该记录已经输出了多少个,然后再输出到3个的时候退出。

3、第21~23行,

if(i>scores.length-4){

              break;

          }

这里控制只输出3个,你这里用到scores.length-4,应该是想在i遍历scores倒数第4个的时候退出,但是你这是假定你已经知道了数组有1个大于100,然后是3个你要输出的最大值,可是你写这个方法的时候并不知道传给你的数组是什么。而且即便这样你也应该写i<scores.length-3。


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

改了下代码,请参考加粗斜体注释...

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.getArray(scores);    

    }

    

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

    public void getArray(int[] scores){

       Arrays.sort(scores);

       int printCount = 0;

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

       //for(int i=scores.length-1;i<0;i--){ i 是从 length-1 开始赋值,初始值为 6,若使用 i < 0为判断条件, 永远不执行for循环...

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

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

              //i++; 第一次循环到这的时候 i == 7,然后 i--,i == 6...成死循环了;

              continue;

          }

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

            printCount++;

            //if(i>scores.length-4){ 这里的 i 是从 length-1 开始赋值的,第一个符合条件的 i 值为 5,5 > (7-4),直接break;

            if(printCount == 3){

              break;

          }

       }

    }    

}

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

if语句那边逻辑错误

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

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信