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

求助 没有结果

求助 没有结果

慕设计6419336 2016-11-07 19:52:18
package part1;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.friend(scores);                            }        //定义方法完成成绩排 scores){    public void friend(int[]scores){        int[] score=new int[10]; for(int i=0;i<scores.length;i++)    {        if(scores[i]>0&&scores[i]<=100){           for(int j=0;j<scores.length;j++)       score[j]=scores[i];}    }     Arrays.sort(score);         System.out.println("成绩的前三名:");    for(int j=score.length;j>score.length-3;j--)    {    System.out.println(score[j]);    }}
查看完整描述

2 回答

?
每天一点学

TA贡献3条经验 获得超3个赞

你可以先排序,排序是从小到大的,所以你从最后一个开始遍历,把不符合条件的continue,打印出三个就好了,也就是循环三次。这样计较简单

查看完整回答
2 反对 回复 2016-11-08
?
每天一点学

TA贡献3条经验 获得超3个赞

import java.util.Arrays;

public class All {

/*

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


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


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

*/    

    //完成 main 方法

    public static void main(String[] args) {

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

    All outscores=new All();

    outscores.three(scores);

    }   

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

public void three(int[] scores){

Arrays.sort(scores);

int count=1;

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

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

continue;

}

if(count<=3) {

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

count++;

}

}

}

}

   

    

    

    


查看完整回答
1 反对 回复 2016-11-08
?
慕粉void

TA贡献17条经验 获得超7个赞

int j = score.length; // 数组下标越界了

参考代码

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

  // 定义方法完成成绩排序并输出前三名的功能
  public void getScores(int[] scores) {
    Arrays.sort(scores);
    System.out.println("考试成绩的前三名为:");
    int count = 0;
    for (int i = scores.length - 1; i >= 0; i--) {
      if (scores[i] < 0 || scores[i] > 100) {
        continue;
      } else {
        while (count < 3) {
          count++;
          System.out.println(scores[i]);
          break;
        }
      }

    }
  }

}


查看完整回答
1 反对 回复 2016-11-08
?
菜芽2

TA贡献2条经验 获得超2个赞

给你两种思路,一是先用循环把数组一中大于0小于100的数赋值到数组二,再对数组二进行冒泡排序,然后再输出。这样感觉太麻烦了。还有就是直接对数组一进行冒泡排序,然后输出的时候判断一下,小于100才输出,定义一个int类型的变量计数,输出一次+1,等于3了就跳出循环就好了,这样简单很多
查看完整回答
1 反对 回复 2016-11-07
?
菜芽2

TA贡献2条经验 获得超2个赞

你这样写,第二个循环每一次都把score数组全部都赋值成同一个数了啊,而且也没做排序
查看完整回答
1 反对 回复 2016-11-07
  • 2 回答
  • 0 关注
  • 1246 浏览

添加回答

举报

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