You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:36:12