import java.util.Arrays;
public class HelloWorld {
public static void main(String[] args) {
int scores[]=new int[]{89,-23,64,91,119,52,73};
HelloWorld Hello=new HelloWorld();
System.out.println("前三名成绩是:");
Hello.rangKing(scores);
}
//定义方法完成成绩排序并输出前三名的功能
public void rangKing(int scores[]){
Arrays.sort(scores);
for(int i=scores.length;i>=0;i--){
int num=0;
if(scores[i]<0||scores[i]>100)
continue;
num++;
if(num<=3){
System.out.println(scores[i]);
}
}
}
}
i=scores.length-1,如果是=scores.length的话,会报数组越界的吧
public void rangKing(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++;
System.out.println(scores[i]);
}
if(num==3)break;
}
}
for(int i=scores.length;i>=0;i--)
这句错了,i=scores.length越界了,应该改成i=scores.length-1
1.for(int i=scores.length;i>=0;i--){ scores.length应该改为scores.length-1;此数组中没有第7位元素,只有0,1,2,3,4,5,6; 2.int num=0; num的定义要移到for循环外; 3. if(num<=3){ System.out.println(scores[i]); } 1)应该是num>3。这是一个判断,取三个成绩就跳出循环,不再执行,因此 2)if语句的语句块应该是break,跳出循环 3)System.out.println(scores[i]);这个输出语句要移到if语句外,但要在for循环中 正确代码: package day02; import java.util.Arrays; public class Test06 { public static void main(String[] args) { int[] scores = {89 , -23 , 64 , 91 , 119 , 52 , 73}; Test06 t = new Test06(); t.showTop3(scores); } public void showTop3(int[] scores){ Arrays.sort(scores); int num = 0; for(int i = scores.length-1;i>=0;i--){ if(scores[i]<0||scores[i]>100){ continue; } num++; if(num>3){ break; } System.out.println(scores[i]); } } }
...大胸弟,if(num<=3)...这不是循环语句。,
一般不确定循环次数的用while
确定循环次数的用for ,switch