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 int[] nums;
} 这道题 我想用有返回值的方式去解决,我这样写为什么老是报错啊?
1 回答
已采纳
安浪创想
TA贡献81条经验 获得超23个赞
这个代码真乱啊啊啊
错误分析:函数返回时直接返回数据就行,不需要再定义类型了,只有初始定义时候才需要在变量前加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
添加回答
举报
0/150
提交
取消