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

Java如何合并两个分属不同文件的类 解决main方法重复定义报错

问题原因

  • 你遇到的method main(String[]) is already defined错误,本质是Java不允许同一个类中存在两个方法签名完全一致的方法,你原先的两个类各自有一个public static void main(String[] args)入口方法,合并到同一个类里就会触发重复定义冲突。
  • 之前合并后只有一个类生效的问题,是因为Java程序运行时只会执行你指定的启动类的main方法,另一个类的逻辑没被调用自然不会运行。

解决方案

方案1:保留单入口,把原GFG的逻辑整合到lapTimes类中

直接把秒转分钟的方法移到lapTimes类里,在统一的main方法里同时调用两类逻辑即可,合并后的完整代码如下:

public class lapTimes {
    // 原GFG类的秒转时分方法
    static void ConvertSectoDay(int n) {
        n %= 3600;
        int minutes = n / 60 ;
        n %= 60;
        int seconds = n;
        System.out.println( minutes + " "
                + "minutes " + seconds + " "
                + "seconds ");
    }

    public void lap1(int lap) {
        System.out.println("How many seconds for lap one: " + lap);
    }
    public void lap2(int lap) {
        System.out.println("How many seconds for lap two: " + lap);
    }
    public void lap3(int lap) {
        System.out.println("How many seconds for lap three: " + lap);
    }
    public void lap4(int lap) {
        System.out.println("How many seconds for lap four: " + lap);
    }

    public static void main(String[] args) {
        // 调用原GFG类的逻辑
        ConvertSectoDay(200);
        // 调用原lapTimes类的逻辑
        lapTimes run = new lapTimes();
        run.lap1(34);
        run.lap2(54);
        run.lap3(43);
        run.lap4(61);
    }
}

方案2:同文件保留两个类,删除其中一个的main方法

如果不想把方法合并到同一个类里,也可以在同一个Java文件里保留两个类,只留一个main方法作为统一入口,在入口里调用另一个类的逻辑即可:

class GFG {
    static void ConvertSectoDay(int n) {
        n %= 3600;
        int minutes = n / 60 ;
        n %= 60;
        int seconds = n;
        System.out.println( minutes + " "
                + "minutes " + seconds + " "
                + "seconds ");
    }
}

public class lapTimes {
    public void lap1(int lap) {
        System.out.println("How many seconds for lap one: " + lap);
    }
    public void lap2(int lap) {
        System.out.println("How many seconds for lap two: " + lap);
    }
    public void lap3(int lap) {
        System.out.println("How many seconds for lap three: " + lap);
    }
    public void lap4(int lap) {
        System.out.println("How many seconds for lap four: " + lap);
    }

    public static void main(String[] args) {
        // 调用GFG类的逻辑
        GFG.ConvertSectoDay(200);
        // 调用lapTimes自身的逻辑
        lapTimes run = new lapTimes();
        run.lap1(34);
        run.lap2(54);
        run.lap3(43);
        run.lap4(61);
    }
}

注意事项

  • 单Java文件中最多只能有一个被public修饰的类,且文件名必须和这个public类的类名完全一致,否则会编译失败。
  • 如果需要两类逻辑分开运行,也可以给不同的逻辑封装成不同的方法,在main方法里通过入参判断执行哪部分逻辑即可。

内容的提问来源于stack exchange,提问作者FriedOrangeSlice

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 08:54:01