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

各位大神看看哪里错了啊,输出成绩后三位,后面的循环看不明白了

//1、 考试成绩已保存在数组 scores 中,数组元素依次为 89 , -23 , 64 , 91 , 119 , 52 , 73


//2、 要求通过自定义方法来实现成绩排名并输出操作,将成绩数组作为参数传入


//3、 要求判断成绩的有效性( 0—100 ),如果成绩无效,则忽略此成绩

package com.imooc;

import java.util.Arrays;

public class HelloWorld 

{

    

    public static void main(String[] args) 

    {

    HelloWorld hello=new HelloWorld();

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

        scores=hello.ArrayMax(scores);

        hello.ArrayOut(scores);

        

    }

    public int[] ArrayMax(int k[])

    {

    Arrays.sort(k);

    return k;

    }

    public void ArrayOut(int k[])

    {

    System.out.println("排名前三位:");

    int count=0;

    for(int i=0;i<k.length;i++)

    {

    do{

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

    {

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

    count++;

    }

    }while(count<3);

    }

   

    }

}


正在回答

3 回答

//源代码后面的ArrayOut方法修改前

    public void ArrayOut(int k[])

    {

    System.out.println("排名前三位:");

    int count=0;

    for(int i=0;i<k.length;i++)

    {

    do{

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

    {

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

    count++;

    }

    }while(count<3);

    }    

//ArrayOut方法修改后-----------

public void ArrayOut(int k[]) {

System.out.println("排名前三位:");

int count = 0;

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

if(count<3){ // 修改处

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

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

count++;

}

}

}


}

//总结:do(){

}while()语句不太适合用在此处,改为if(){}语句即可。

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

慕神1905738 提问者

我也是这么改的,可就是看不出之前的为什么不对呢?请详细说明一下好么
2015-11-03 回复 有任何疑惑可以回复我~
#2

mr1024 回复 慕神1905738 提问者

大哥0.0我也是小白......不过建议你一点,不要死钻牛角尖!!!不然编程之路走得更不容易0.0,学习进度也慢。 个人感觉是语法冲突问题0.0先执行一次跟判断了再执行肯定有不同之处的! 如果你觉得自己对语法有些理解不深刻,可以先过一遍,然后哪里不懂补哪里,不然一直纠结一块问题是很不好的!!!
2015-11-03 回复 有任何疑惑可以回复我~
#3

慕神1905738 提问者 回复 mr1024

嗯,有道理,我就有点钻牛角尖。。。不过确实不知道为什么啊,有时候越想越蒙圈,隔了一阵子反而再看就明白了
2015-11-04 回复 有任何疑惑可以回复我~

Arrays.sort(scores);自动对排序;  for(int i = scores.length-1;i>=0&&num<3;i--)
        {
            if(scores[i]<0||scores[i]>100)
                continue;
            num++;
            System.out.println(scores[i]);
        }这个表示输出阵列时,当scores[i]<0||scores[i]>100时,程序继续循环,不满足条件的就没输出

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

package liaoting;
import java.util.Arrays;
public class canshuzhi {
   
    //完成 main 方法
    public static void main(String[] args) {
    int []scores = {89,-23,64,91,119,52,79};   
   
    System.out.println(" 本次考试前三名是:");
    canshuzhi hello = new canshuzhi();       
    hello.big3(scores);   
    }
   
    //定义方法完成成绩排序并输出前三名的功能
   
    public void big3(int [] scores)
    {
        Arrays.sort(scores);
        int num = 0;
        for(int i = scores.length-1;i>=0&&num<3;i--)
        {
            if(scores[i]<0||scores[i]>100)
                continue;
            num++;
            System.out.println(scores[i]);
        }
    }
   
   
}

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

慕神1905738 提问者

能说明之前我问的那个为什么有问题么。。
2015-11-03 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

各位大神看看哪里错了啊,输出成绩后三位,后面的循环看不明白了

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