码蹄集运行Java代码报错

我写马蹄集的题目MT2033碰碰车,写的Java代码IDE上可以正常运行,但是到了马蹄集里面提交就报错

img

img

img

运行执行代码的时候完整的报错信息为

img

img

img

img

img


我点击提交后的报错信息为

img

我的代码如下

import java.util.Scanner;
import java.util.*;

class Car {
    int id;
    int position;
    int direction;

    Car (){}

    Car(int id, int position, int direction) {
        this.id = id;
        this.position = position;
        this.direction = direction;
    }

    @Override
    public String toString() {
        return String.format("Car: id为%d, position为%d, direction为%d",id,position,direction);
    }
}

class Car_abstract {
    int pos;
    int dir;

    Car_abstract(){}

    Car_abstract(int pos, int dir) {
        this.pos = pos;
        this.dir = dir;
    }

    @Override
    public String toString() {
        return String.format("Car_abstract: pos为%d, dir为%d",pos,dir);
    }
}
class Main {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        // code here
        //获取数量和时间
        int carNum = input.nextInt();
        int time = input.nextInt();

        Car[] origin = new Car[carNum];
        Car_abstract[] process = new Car_abstract[carNum];

        for (int i = 0; i < carNum; i++) {
            int pos = input.nextInt();
            int dir = input.nextInt();

            Car c1 = new Car(i, pos, dir);
            Car_abstract c2 = new Car_abstract(pos,dir);

            origin[i] = c1;
            process[i] = c2;
        }

        // 将orign按照position进行排序
        Arrays.sort(origin, new Comparator() {
            @Override
            public int compare(Car o1, Car o2) {
                return o1.position - o2.position;
            }
        });

        // 遍历process,更新pos
        for (Car_abstract car_abs: process) {
            car_abs.pos = car_abs.pos + time * car_abs.dir;
        }

        //process数组按照pos进行排序
        Arrays.sort(process, new Comparator() {
            @Override
            public int compare(Car_abstract o1, Car_abstract o2) {
                return o1.pos - o2.pos;
            }
        });

        //遍历process,如果有pos相同则dir置0,这里先用两层for循环暴力解一下,以后可以用双指针优化
        for (int i = 0; i < carNum; i++) {
            for (int j = i+1; j < carNum; j++) {
                if (process[i].pos == process[j].pos) {
                    process[i].dir = 0;
                    process[j].dir = 0;
                }
            }
        }

        Car[] res = new Car[carNum];
        for (int i = 0; i < carNum; i++) {
            Car finalCar = new Car(origin[i].id, process[i].pos, process[i].dir);
            res[i] = finalCar;
        }

        // 将result数组按照id进行排序
        Arrays.sort(res, new Comparator() {
            @Override
            public int compare(Car o1, Car o2) {
                return o1.id - o2.id;
            }
        });

        // 输出结果
        for (int i = 0; i < carNum; i++) {
            System.out.println(String.format("%d %d", res[i].position, res[i].direction));
        }
        input.close();
    }
}

我网上查了都说是JDK版本的问题,但是在马蹄集里面我也没办法改它的JDK,因此想请教大家。

以下答案基于GPT3.5大模型与博主波罗歌编写:

  • 根据你提供的信息,这个错误可能与Java版本有关。您可以尝试将Java代码版本更改为与马蹄集使用的版本相同的版本。您可以从马蹄集使用的控制台中查找更多有关Java版本的信息。确保您的Java代码可以在相同的Java版本上运行。

  • 除此之外,您还可以尝试使用不同的IDE来编写Java代码。某些IDE可能会自动设置Java版本并在代码中包含必要的依赖项。

  • 最后,您还可以查看您的代码是否存在语法错误或逻辑错误。在Java代码中,在编译代码之前,您可以首先通过运行断言进行测试。它可以帮助您检测并修复错误,并防止在运行时遇到可能导致程序崩溃的问题。

给官方提工单,这个你解决不了,或者尝试更换浏览器试试,重启电脑,清理浏览器缓存等,望采纳

参考GPT和自己的思路,该错误通常是由于Java版本不兼容导致的。您的代码似乎使用了Java 8或更高版本的语法,而马蹄集可能仅支持较旧版本的Java。

要解决此问题,您可以尝试以下几个步骤:

1 确认您的代码是否使用了Java 8或更高版本的语法。您可以查看Java文档中关于该语法的相关部分,确认是否与Java 7或更早版本兼容。

2 将您的代码修改为Java 7或更早版本的语法,以确保马蹄集可以正确编译和运行。

3 尝试使用马蹄集支持的Java版本。您可以在马蹄集的文档或支持页面中查找有关受支持Java版本的信息。

对于您的代码,我建议将Lambda表达式替换为匿名内部类,这可以使代码与Java 7或更早版本兼容。例如,将以下代码:

Arrays.sort(origin, (o1, o2) -> o1.position - o2.position);

替换为:

Arrays.sort(origin, new Comparator() {
@Override
public int compare(Car o1, Car o2) {
return o1.position - o2.position;
}
});

请注意,您可能需要进行其他更改,以确保代码与旧版本的Java兼容。

看下能不能找到他的JDK版本是哪个,你本地和他保持一致。
或者看下执行代码配置里面能不能设置jdk版本

WHUTER?解决了吗哥们