qq_长山_0
2018-07-27 20:33
import java.util.Arrays;public class HelloWorld { //完成 main 方法 public static void main(String[] args) { int[] scores = {89,-23,64,91,119,52,73}; // system.out.println("考试成绩的前三名为:") HelloWorld hello = new HelloWorld(); hello.marks(scores); } //定义方法完成成绩排序并输出前三名的功能 public void marks(int [] scores){ int [] arrays={}; int count = 0; Arrays.sort(scores); for(int i=scores.length-1;i>=0;i--) { if(scores[i]<0 || scores[i]>100){ continue; } else{ count++; for(int j=0;j<3;j++) arrays[j]=scores[i]; if (count==3) break; } } System.out.println("考试成绩的前三名为"+Arrays.toString(arrays)); }
import java.util.Arrays;
public class HelloWorld {
//完成 main 方法
public static void main(String[] args) {
int[] scores = {89,-23,64,91,119,52,73};
// system.out.println("考试成绩的前三名为:")
HelloWorld hello = new HelloWorld();
hello.marks(scores);
}
//定义方法完成成绩排序并输出前三名的功能
public void marks(int [] scores){
int [] arrays={};
int count = 0;
Arrays.sort(scores);
for(int i=scores.length-1;i>=0;i--)
{
if(scores[i]<0 || scores[i]>100){
continue;
}
else{
count++;
for(int j=0;j<3;j++)
arrays[j]=scores[i];
if (count==3)
break;
}
}
System.out.println("考试成绩的前三名为"+Arrays.toString(arrays));
}
另外,你运行的效果应该是报错数组下限超出范围吧,因为你定义的arrays【】给的是个{}---空,然后我给你改了下,自己看下效果是怎样的
看图就明白了
import java.util.Arrays;
public class HelloWorld {
// 完成 main 方法
public static void main(String[] args) {
int[] scores = { 89, -23, 64, 91, 119, 52, 73 };
// system.out.println("考试成绩的前三名为:")
HelloWorld hello = new HelloWorld();
hello.marks(scores);
}
// 定义方法完成成绩排序并输出前三名的功能
public void marks(int[] scores) {
// int[] arrays = {};
System.out.println("考试成绩前三名为:");
int count = 0;
Arrays.sort(scores);
for (int i = scores.length - 1; i >= 0; i--)
{
if (scores[i] < 0 || scores[i] > 100) {
continue;
}
else {
count++;
System.out.println(scores[i]);
/*
* for (int j = 0; j < 3; j++)
* arrays[j] = scores[i];
*/
/*
* 首先你这个for循环没有{}划分范围,其次我不知道你为什么又定义一个数组arrays用来存储成绩的前三名,
* 既然定义了count,让它<=3,这就可以直接控制scores数组的输出 ,再然后你这个内for循环的作用你仔细看看,
* 它在外for循环里面,就算你运行成功了,也是每次将同一个值赋给不同下标的arrays数组值
*/
if (count == 3)
break;
}
}
// System.out.println("考试成绩的前三名为" + Arrays.toString(arrays));
}
}
在你的代码的循环中,你用了双重循环,当分数满足在0到100分之间时,你将分数用一个循环输入到arrays数组中,但是实际上此时的scores[i]是一个值,你用j的这个循环将同样的值给了arrays数组,也就是说else执行完过后,arrays数组中是三个相同的值,而跳到外层循环之后,再次遇到满足条件的scores[i]时,会覆盖掉你原来的arrays数组,所以你的代码输出的结果是第三名的分数,并且是三次吧。我没运行你的代码,只是看了看,问题应该是在这。
import java.util.Arrays;public class HelloWorld { //完成 main 方法 public static void main(String[] args) { int[] scores= {89,-23,64,91,119,52,73}; System.out.println("考试成绩的前三名为:"); HelloWorld scoresTop3=new HelloWorld();//创建对象 scoresTop3.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]); } }}
Java入门第一季(IDEA工具)升级版
1165172 学习 · 17581 问题
相似问题