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.input(scores); } //定义方法完成成绩排序并输出前三名的功能 public void input(int[] scores) { Arrays.sort(scores); int num=0; for(int i=scores.length-1;i>=0;i--) { if(scores[i]>0&&scores[i]<100) num++; if(num<3) System.out.println(scores[i]); } } } 要输出三个成绩呢 为啥我觉得应该是num<=3,变量跟踪也觉得是这样啊
你初始化的num=0 这 if判断3次 num=0 ,1 , 2 就会输出前3的成绩 改成num<=3 则会输出四个成绩!
你可以初始化num=1 if(num<=3),这样就是3个成绩了!
import java.util.Arrays;
public class HelloWorld {
public static void main(String[] args) {
int[] scores={89,-23,64,91,119,52,73};
HelloWorld hello=new HelloWorld();
hello.input(scores);
}
public void input(int[] scores) {
Arrays.sort(scores);
int num=0;
for(int i=scores.length-1;i>=0;i--){
if(scores[i]>0&&scores[i]<100){
num++;
if(num<=3)
{System.out.println(scores[i]);}
}
}
}
}
代码改成这样 两个if 改成镶嵌式 第一个if 成立时再执行第二个if 就没问题了
不应该是 判断119时 num+1=1;91时等于2;89时等于3吗