搞了几个小时,耐心,再耐心,总算是排出了错误,顺利通过编译!!(呼~)
/* 编写一个 java 程序,实现输出考试成绩的前三名
*
* 要求:
* 1、考试成绩已保存在数组 scores 中,数组元素依次为 89,-23,64,91,119,52,73
* 2、通过自定义方法来实现成绩排名并输出操作,将成绩数组作为参数传入
* 3、要求判断成绩的有效性(0——100),如果成绩无效,则忽略此成绩;
* 运行结果:
* 考试成绩的前三名为:
* 91
* 89
* 73
/* 思路:
* 1、对成绩数组 scores 排序(升序)
* 2、遍历数组 scores ,若有无效成绩,使计数器 count +1 ;
* 3、定义新数组 newarrs , 长度为 scores.length - count ;
* 4、遍历数组 scores , 若成绩有效,则令 newArrs[] = scores[];
* 5、倒序打印数组 newArrs[]后三位;*/
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};
hello.nums(scores);
}
public void nums(int[] scores){
int i,j; // 定义循环变量
int count = 0 ; // 定义计数器
for ( i=0; i < scores.length ; i++){ //遍历数组 scores
if ((scores[i]>0)&&(scores[i]<100)){
count++; //统计有效元素的个数 } }
// 定义新数组 newarrs ,存放scores中的有效成绩
int[] newarrs = new int[count];
for ( i=0,j=0; i < scores.length ; i++ ){ // 遍历数组scores,找出有效成绩
if ((scores[i]>0)&&(scores[i]<100)){
newarrs[j] = scores[i];
j++; } }
Arrays.sort(newarrs); //对数组排序,升序,最大的数在最右边
j=0;
for ( i= count-1 ; j < 3 ; i-- ){
System.out.println(newarrs[i]); // 输出打印数组后三个数
j++; } } }