import java.util.*;
public class HelloWorld {
//完成 main 方法
public static void main(String[] args) {
int[] scores={89,-23,64,91,119,52,73};
HelloWorld line = new HelloWorld();
line.sort(scores);
}
//定义方法完成成绩排序并输出前三名的功能
public void sort(int[]scores){
//选出有效成绩
int i,j;
for(i=0,j=0;i<scores.length;i++);
{
if(scores[i]>0&&scores[i]<100)
{
scores[j]=scores[i];
j++;
}
}
//有效成绩排序
Arrays.sort(scores);
System.out.println("考试前三名为:");
//选出前三名
for(int k=scores.length-1;k>scores.length-4;k--)
{
System.out.println(scores[k]);
}
}
运行显示问题:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 7
at ad.HelloWorld.sort(HelloWorld.java:18)
at ad.HelloWorld.main(HelloWorld.java:9)
根据数学上证明一个结论不能在证明时使用这个结论,类比到编程,认为:在定义sort(int[] scores)时,应该不能调用sort(scores)便把你的sort(int[] scores)方法改成了2个,就能输出结果。不知道原因是不是这个,是这么想的,就做了相应的修改。
import java.util.Arrays;
public class HelloWorld {
//完成 main 方法
public static void main(String[] args) {
int[] scores={89,-23,64,91,119,52,73};
HelloWorld line = new HelloWorld();
line.sort1(scores);
}
//定义方法完成成绩排序并输出前三名的功能
public void sort(int[]scores){
//选出有效成绩
int i,j;
for(i=0,j=0;i<scores.length;i++);
{
if(scores[i]>0&&scores[i]<100)
{
scores[j]=scores[i];
j++;
}
}
}
public void sort1(int[] scores){
//有效成绩排序
Arrays.sort(scores);
System.out.println("考试前三名为:");
//选出前三名
for(int k=scores.length-1;k>scores.length-4;k--)
{
System.out.print(scores[k]+" ");
}
}
}
考试前三名为:
119 91 89
public void sort(int[] scores){
int count=0;
Arryas.sort(scores);
for(int i=scores.length;i>=0;i--){
if(scores[i]>0&&scores[i]<100){
System.out.println(scores[i]);
count++;
if(count==3){
break;
}
}
}
}
这样可以输出前三名!你的情况我也出现过,不过我也不知道为什么
我把输出考试前三那行的println换成print了显示下面这些
/85/1598/DsXg/HelloWorld.java:35: error: reached end of file while parsing
}
^
1 error