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

如何修复Java中Player类与Coach类无输出的问题?

问题分析与解决方案

你遇到的问题很典型——Java程序只会执行一个入口main方法,也就是你Team类里定义的那个,而Player和Coach类里的main方法根本不会被触发执行。另外,这两个类是Team的内部类,直接调用也有语法问题。咱们一步步来修正:

核心问题点

  • Java程序的入口是public static void main(String[] args),整个程序只会启动这一个方法,其他类里的同名方法不会自动运行。
  • Player和Coach是Team的非静态内部类,必须依赖外部类Team的实例才能创建对象。

修正步骤

  1. 把Player和Coach里的main方法改成普通方法,比如分别叫printPlayerRoster()和printCoachInfo(),避免和入口方法混淆。
  2. 在Team类的main方法里,先创建Team的实例,然后通过这个实例创建Player和Coach的内部类对象,再调用它们的打印方法。

修正后的完整代码

public class Team {
    public static void main(String[] args) {
        String team_name = "Team Georgia";
        System.out.println(team_name);
        
        // 创建外部类实例,用于初始化内部类
        Team team = new Team();
        
        // 实例化Player内部类并调用打印方法
        Team.Player playerRoster = team.new Player();
        playerRoster.printPlayerRoster();
        
        // 实例化Coach内部类并调用打印方法
        Team.Coach coachInfo = team.new Coach();
        coachInfo.printCoachInfo();
    }
    
    // Team Roster
    public class Player {
        public void printPlayerRoster() {
            String[] first_name = {"Jack","Dave","Henry","John","David","Bob","Tony","Malcolm","Hiro","Jack","Jesus","Luck","Ben", "Benny", "Caboose", "Michael","Taylor","Mark","Hiroshida","Jack","Patric","Davin"};
            String[] last_name = {"Le","lynth","Luther","Kendral","Larry","John","Dave","Grendal","Lee","Lyn","Susan","Solo","Holmes","Stark","Potter","Welma","Han","Smith","Solo","Weasly","Emma","Bones"};
            String[] position = {"Front","Front","Front","Front","Side","Side","Side","Back","Back","Side","Front","Front","Front","Front","Side","Side","Side","Back","Back","Side","Mid","Mid"};
            for ( int i = 0; i < first_name.length; i++ ) {
                System.out.println("First name: " + first_name[i]);
                System.out.println("Last name: " + last_name[i]);
                System.out.println("Position: " + position[i]);
                System.out.println("------------------------"); // 加个分隔线更清晰
            }
        }
    }
    
    // Coach
    public class Coach {
        public void printCoachInfo() {
            String[] first_name = {"Brown","Dave","Jack","King"};
            String[] last_name = {"Jun","Jac","Frost","Kong"};
            String[] title = {"Head Coach", "Assistant Coach", "Offensive Coordinator", "Defensive Coordinator"};
            for ( int i = 0; i < first_name.length; i++ ) {
                System.out.println("First name: " + first_name[i]+ " Last name: " + last_name[i] + " Position: " + title[i]);
                System.out.println("------------------------");
            }
        }
    }
}

额外说明

如果你希望Player和Coach类不依赖Team的实例,可以把它们改成静态内部类(加上static关键字),这样创建对象的时候就不需要先创建Team实例了,直接用Team.Player player = new Team.Player();就行。比如:

public static class Player {
    // ... 方法内容不变
}

这样修改后,运行程序就能先输出队名,接着输出所有球员信息,最后输出教练信息啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 23:28:10