运行Java加法游戏时出现java.lang.NoSuchMethodError问题求助
问题分析与修复方案
一、解决NoSuchMethodError异常
这个异常通常是编译产物与当前代码不匹配导致的,按以下步骤处理:
- 删除项目目录下所有
.class后缀的文件,清理旧编译结果 - 重新编译代码:执行命令
javac AdditionGame.java - 运行程序:执行命令
java AdditionGame - 额外检查:主类名为
AdditionGame,对应的文件名必须是AdditionGame.java,否则编译会出现类找不到的问题
二、修复代码中的运行时bug
你的代码在运行时还会遇到输入读取失败的问题——每次循环创建Scanner并关闭,会连带关闭System.in,导致后续无法读取输入。另外可以优化随机数生成逻辑,避免重复创建Random实例。
修复后的完整代码:
import java.util.Scanner; import java.util.Random; public class AdditionGame { public static void main(String[] args){ Game gameObject = new Game(); gameObject.playGame(); } } class Game { int score = 0; private final Random random = new Random(); // 复用Random实例 public int generateNumber(){ return random.nextInt(20) + 1; } public void playGame(){ Scanner scannerObject = new Scanner(System.in); // Scanner移到循环外 int i = 0; while (i < 10){ int number1 = generateNumber(); int number2 = generateNumber(); int answer = number1 + number2; int userAnswer; i++; System.out.println("What is " + number1 + "+" + number2 + " :"); String userAnswerSTR = scannerObject.nextLine(); try { userAnswer = Integer.parseInt(userAnswerSTR); if (userAnswer == answer){ System.out.println("Correct Answer!"); score++; } else { System.out.println("Incorrect! The answer was: " + answer); } } catch (NumberFormatException e) { System.out.println("请输入有效的整数!本轮不计分"); } } scannerObject.close(); // 循环结束后统一关闭 System.out.println("Congratulations! Your score was: " + score); } }
额外优化:增加了NumberFormatException捕获逻辑,处理用户输入非整数的情况,避免程序直接崩溃。
内容的提问来源于stack exchange,提问作者dawsUTV
相关产品推荐
相关产品推荐

