public static void main(String[] args) {
HelloWord hello=new HelloWord();
hello.score();
}
public void score() {
int max=0;
int[] score= {89,-23,64,91,119,52,73};
for(int i=0;i<score.length;i++){
if(score[i]>=0 && score[i]<=100) {
if(max < score[i]) {
max=score[i];
}
}
}
System.out.println("考试成绩的前三名为:");
for(int x=0;x<3;x++) {
System.out.println(max);
}
}
}
还有一种方法 改前面的for循环
代码如下:
public void score() {
int max=0;
int[] max=new int[3]; //取前3,因此数组长度为3
int count=0; //该变量代表有效值次数
int[] score= {89,-23,64,91,119,52,73};
Arrays.sort(score); // 给数组score从低到高排序,第一行上边要有import java.util.Arrays;
for(int i=0;i<score.length;i++){
if(score[i]>=0 && score[i]<=100) {
if(max < score[i]) {
max=score[i];
}
改为:
if(score[i]<0||score[i]>100){
continue;
} //跳过无效值
count++; //遍历一个有效值,有效值次数加1
if(count>=3){
break;
}
max[count-1]=score[i]; //此时count的值为1到3,赋值之后的数组max中的值从大到小排列
}
}
System.out.println("考试成绩的前三名为:");
for(int x=0;x<3;x++) {
System.out.println(max);
}
}
把max定义为数组
代码如下
public void score() {
int max=0; //这个注释掉
int[] max=new int[];
int[] score= {89,-23,64,91,119,52,73};
for(int i=0;i<score.length;i++){
if(score[i]>=0 && score[i]<=100) {
if(max < score[i]) {
max=score[i];
}
改为:
max[i]=score[i]; //这时数组max里的值都为有效数值
}
}
Arrays.sort(max); //给数组max排序,从低到高
System.out.println("考试成绩的前三名为:");
for(int x=0;x<3;x++) {
System.out.println(max);
}
改为:
for(int x=max.length-1;x>max.length-4||x>=0;x--){ //输出数组后三个数值,若数组中的数值数量小于3,则输出全部数值
System.out.println(max[x]);
}
}
你在if条件下给max赋了值,max就会一直变到循环结束,之后成为一个定值,比如一百以内最大值是89,max则在89时就不会变化。以至于在下面输出时候只能输出三个89。在这种前提下只是取出数组中一百以内的最大值,不能得到一百以内的前三大的值。
按你这个自己定义的方法是无法输出前三名的,只能输出三次同一个最大值