Autolab作业出现找不到类错误,求指导Snow类ArrayList按指定变量升序排序
嘿,我来帮你搞定这两个问题——Autolab里的找不到类错误,还有Snow类的排序实现。咱们一步步来:
一、解决“找不到类”的错误
这个问题通常是几个小细节没注意到,你可以逐一排查:
- 确保
Snow类是public修饰的,并且单独放在名为Snow.java的文件里(Java要求public类的文件名必须和类名完全一致) - 如果你的
ProblemSet类和Snow类不在同一个包下,记得在ProblemSet类开头导入Snow类:import 你的包名.Snow; - 提交到Autolab时,一定要把
Snow.java和ProblemSet.java两个文件都上传,别漏传其中一个
二、正确实现Snow类和sortSnow排序方法
首先先写符合要求的Snow类,需要包含私有实例变量,以及对应的getter方法(排序时需要访问这些私有变量):
public class Snow { // 题目要求的私有实例变量 private int vast; private int prior; private int ethnic; private int remarkable; // 构造方法(方便创建Snow对象,按需添加) public Snow(int vast, int prior, int ethnic, int remarkable) { this.vast = vast; this.prior = prior; this.ethnic = ethnic; this.remarkable = remarkable; } // 各个变量的getter方法,排序时需要读取这些值 public int getVast() { return vast; } public int getPrior() { return prior; } public int getEthnic() { return ethnic; } public int getRemarkable() { return remarkable; } }
接下来是ProblemSet类里的sortSnow方法,这里给你两种常用的实现方式:
方式1:使用Comparator(推荐,灵活切换排序依据)
这种方式不需要修改Snow类,随时可以切换按哪个变量排序,比如我们先按vast升序排序:
import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; public class ProblemSet { public static void sortSnow(ArrayList<Snow> snowList) { // 用匿名内部类实现Comparator,指定按vast升序排列 Collections.sort(snowList, new Comparator<Snow>() { @Override public int compare(Snow s1, Snow s2) { // 升序逻辑:s1的vast小于s2返回负数,相等返回0,大于返回正数 return Integer.compare(s1.getVast(), s2.getVast()); // 如果要改成按prior排序,直接替换成s1.getPrior()和s2.getPrior()即可 } }); } // 可选:本地测试用的main方法 public static void main(String[] args) { ArrayList<Snow> list = new ArrayList<>(); list.add(new Snow(3, 1, 5, 2)); list.add(new Snow(1, 4, 2, 3)); list.add(new Snow(2, 2, 3, 1)); sortSnow(list); for (Snow s : list) { System.out.println(s.getVast()); // 输出应该是1, 2, 3 } } }
方式2:让Snow实现Comparable接口(适合固定排序依据的场景)
如果题目要求固定按某个变量排序(比如固定按vast),可以让Snow类实现Comparable接口,这样排序代码会更简洁:
修改后的Snow类:
public class Snow implements Comparable<Snow> { // 原来的变量、构造方法、getter方法不变 @Override public int compareTo(Snow other) { // 按vast升序排序 return Integer.compare(this.vast, other.vast); } }
对应的sortSnow方法可以简化为:
public static void sortSnow(ArrayList<Snow> snowList) { Collections.sort(snowList); }
内容的提问来源于stack exchange,提问作者jhonathan
相关产品推荐
相关产品推荐

