package com.imooc4;
import java.util.Arrays;
public class HelloWorld {
// 完成 main 方法
public static void main(String[] args) {
HelloWorld hello = new HelloWorld();
int[] scores = { 89, -23, 64, 91, 119, 52, 73 };
System.out.println(“考试成绩的前3名为:”);
System.out.println(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;
}
count++;
if (count > 3) {
break;
}
System.out.println(scores[i]);
}
return scores;
}
}
考试成绩的前3名为:
119
91
89
[I@19e0bfd
import java.util.Arrays;
public class HelloWorld {
// 完成 main 方法
public static void main(String[] args) {
HelloWorld hello = new HelloWorld();
int[] scores = { 89, -23, 64, 91, 119, 52, 73 };
System.out.println(“考试成绩的前3名为:”);
System.out.println(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;
}
count++;
if (count > 3) {
break;
}
System.out.println(scores[i]);
}
return scores;
}
}
考试成绩的前3名为:
119
91
89
[I@19e0bfd
解决方案
3
哈哈,前面三个是你sort方法里面输出的,底下那个你输出的是个 int[] 对象,所以。哈哈
1
小姑娘,你还是不理解代码的执行过程啊,来来分析一下:
第一步,Arrays.sort(scores),这个时候scores变成了–>[-23, 52, 64, 73, 89, 91, 119]
第二部,对于数组的最后一个数,也就是119,不满足在0-100直接,重点来了,count++,count变成1,继续执行,count<3,继续执行,输出score[i],也就是119。
第三部,继续循环,得到的结果就是 输出前三个最大的数,然后结束。
根本没有实现你要的考试成绩前三名,你的scores数组只是排了序而已。
所以:可以调整下:
public static void main(String[] args) { HttpTest hello = new HttpTest(); int[] scores = { 89, -23, 64, 91, 119, 52, 73 }; System.out.println("考试成绩的前3名为:"); System.out.println(hello.sort(scores)); } // 定义方法完成成绩排序并输出前三名的功能 public String sort(int[] scores) { Arrays.sort(scores); int count = 0; StringBuilder top3Str = new StringBuilder(); for (int i = scores.length - 1; i >= 0; i--) { if ((scores[i] <= 0) && (scores[i] >= 100)) { continue; }else{ top3Str.append(scores[i]+"\n"); count++; } if (count > 3) { break; } //System.out.println(scores[i]); } return top3Str.toString(); }
15
sorry,刚刚那个代码有点问题,要修改一下:把&&改为||,把3改成2。
public String sort(int[] scores) { Arrays.sort(scores); int count = 0; StringBuilder top3Str = new StringBuilder(); for (int i = scores.length - 1; i >= 0; i--) { if ((scores[i] <= 0) || (scores[i] >= 100)) { continue; }else{ top3Str.append(scores[i]+"\n"); ++count; } if (count > 2) { break; } } return top3Str.toString(); }
1
为什么运行结果会有乱码?
调用写错了。百思不得其解。一问出来突然就知道了