安浪创想
这个代码真乱啊啊啊错误分析:函数返回时直接返回数据就行,不需要再定义类型了,只有初始定义时候才需要在变量前加int[]这样的类型。而且你的sort函数的返回值应该是 传入的 scores,而不是前面过程中的nums代码如下:import java.util.Arrays;
public class HelloWorld {
//完成 main 方法
public static void main(String[] args) {
System.out.println("考试成绩的前三名为:");
HelloWorld hello = new HelloWorld();
int[] scores = new int[]{89, -23, 64, 91, 119, 52, 73};
int[] nums = new int[3];
nums = hello.sort(scores);
}
//定义方法完成成绩排序并输出前三名的功能
public int[] sort(int[] scores) {
Arrays.sort(scores);
int count = 0;
for (int i = scores.length - 1; i >= 0; i--) {
if (scores[i] < 0 || scores[i] > 100) {
continue;
} else {
count++;
}
if (count > 3) {
break;
}
System.out.println(scores[i]);
}
return scores;
}
}而你的这个代码不够优化:应该这样优化:import java.util.Arrays;
public class HelloWorld {
//完成 main 方法
public static void main(String[] args) {
System.out.println("考试成绩的前三名为:");
int[] scores = new int[]{89, -23, 64, 91, 119, 52, 73};
int[] nums = new int[3];
nums = sort(scores);
for (int rank :
nums) {
System.out.println(rank);
}
}
//定义方法完成成绩排序并输出前三名的功能
static int[] sort(int[] scores) {
Arrays.sort(scores);
int count = 0;
for (int i = scores.length - 1; i >= 0; i--) {
if (scores[i] < 0 || scores[i] > 100) {
continue;
} else {
count++;
}
if (count > 3) {
break;
}
// System.out.println(scores[i]); 这里是执行函数体,不要再这进行数据'使用'操作,应该把获得的数据返回去而不是在这列出来
}
return scores;
}
}执行结果为:考试成绩的前三名为:
-23
52
64
73
89
91
119你的算法是反的了,sort函数已经从低到高排序,你取最大数据并获得一个数据数组应该为:import java.util.ArrayList;
import java.util.Arrays;
public class HelloWorld {
//完成 main 方法
public static void main(String[] args) {
System.out.println("考试成绩的前三名为:");
int[] scores = new int[]{89, -23, 64, 91, 119, 52, 73};
ArrayList<Integer> nums = new ArrayList();
nums = sort(scores);
for (int i=1;i<=nums.size();i++){
System.out.println("第"+i+"名:"+nums.get(i-1));
}
}
//定义方法完成成绩排序并输出前三名的功能
static ArrayList<Integer> sort(int[] scores) {
Arrays.sort(scores);
int count = 0;
ArrayList<Integer> newTopScores = new ArrayList<>();
for (int i = scores.length - 1; i >= 0; i--) {
if (scores[i] < 0 || scores[i] > 100) {
continue;
} else {
count++;
}
if (count > 3) {
break;
}
// System.out.println(scores[i]); 这里是执行函数体,不要再这进行数据'使用'操作,应该把获得的数据返回去而不是在这列出来
// 把最大的添加到数组里保存起来
newTopScores.add(scores[i]);
}
return newTopScores;
}
}运行结果为:考试成绩的前三名为:
第1名:91
第2名:89
第3名:73