Java初学者调用对象方法报Syntax error on token "talk"错误求助
问题根因
语法报错的核心原因是Java可执行语句不能直接写在类的顶级作用域下,仅能放置在方法、构造方法、静态/非静态初始化代码块内部。你写的player1.talk()是方法调用的可执行语句,直接放在GuessGame类的主体中,不属于任何可执行代码块,因此编译器抛出语法错误。
解决方案
根据你的业务逻辑需求,将方法调用移动到对应可执行块中即可,以下是两种常见修改方案:
- 方案1:将调用逻辑放在游戏启动方法
guessGameStarts中,调用游戏启动方法时才执行玩家发言逻辑
package guessGame; public class GuessGame { void guessGameStarts(){ System.out.println(" Welcome to a new party of GuessGame! \n We have 4 news candidates for this session!\n"); // 方法调用移至方法内部即可正常执行 player1.talk(); } Player player1 = new Player("Maurisse"); Player player2 = new Player("Albert"); Player player3 = new Player("Mathilde"); Player player4 = new Player("Chloé"); }
- 方案2:将调用逻辑放在
GuessGame的构造方法中,创建GuessGame实例时自动执行玩家发言逻辑
package guessGame; public class GuessGame { void guessGameStarts(){ System.out.println(" Welcome to a new party of GuessGame! \n We have 4 news candidates for this session!\n"); } Player player1 = new Player("Maurisse"); Player player2 = new Player("Albert"); Player player3 = new Player("Mathilde"); Player player4 = new Player("Chloé"); // 构造方法,创建GuessGame对象时自动执行 public GuessGame(){ player1.talk(); } }
补充说明:你当前Player类的构造方法为包访问权限,只要GuessGame和Player都同属于guessGame包下,不会触发额外权限报错,无需修改Player类原有代码。
内容的提问来源于stack exchange,提问作者Franfax
相关产品推荐
相关产品推荐

