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

如何修复Java中的不可达语句?新手开发者求助

解决你的Java猜数字游戏问题:不可达语句及其他优化点

嘿,作为Java新手遇到这种问题很正常,我来帮你拆解一下!你提到的“不可达语句”错误是有明确原因的,另外我也发现几个小问题可以帮你一起优化:

1. 核心错误:不可达语句的根源

看你内层循环里的这段代码:

if(GuessingGame[0][integer] == GuessingGame[1][j]){
    System.out.println("Correct!");
    break;
    counter++;
}

当条件满足时,break;会直接跳出当前的for(j)循环,后面的counter++;永远没有机会被执行到——编译器就会判定这是“不可达语句”,抛出错误。

修复方法:把counter++;移到break;前面就行,这样计数完再跳出循环:

if(GuessingGame[0][integer] == GuessingGame[1][j]){
    System.out.println("Correct!");
    counter++;
    break;
}

2. 其他需要调整的潜在问题

除了上面的错误,还有几个点会影响游戏的正常运行:

  • 输入流的换行符问题:当你用input.nextInt()读取总猜测次数y后,输入流里会残留一个换行符。接下来的cancellor = input.nextLine();会直接读取这个空行,而不是等待用户输入。可以在input.nextInt()后加一行input.nextLine();来清空这个换行符。
  • integer变量的逻辑错误:你用integer作为用户输入数组的索引,但这个变量是static的初始值0,全程没有修改过,导致每次判断都是拿第一个用户输入的数字去和AI的数字比较,这显然不符合游戏逻辑。应该改成用当前外层循环的变量i,也就是GuessingGame[0][i]。
  • 二维数组初始化简化:你现在分开初始化二维数组的两行,其实可以直接写成int[][] GuessingGame = new int[2][y];,代码更简洁。

修正后的完整代码示例

import java.util.Random;
import java.util.Scanner;

public class Harrylist{
    static Random aiRandom = new Random(); // 变量名更清晰,避免和用户输入混淆
    static Scanner input = new Scanner(System.in);
    static int counter = 0;

    public static void main(String[] args) {
        System.out.println("Guessing game! please enter a total number of guesses");
        int y = input.nextInt();
        input.nextLine(); // 清空换行符,避免后续nextLine读取空值

        int[][] guessingGame = new int[2][y]; // 直接初始化二维数组

        //AI生成数字
        for(int i = 0; i < y; i++){
            guessingGame[1][i] = aiRandom.nextInt(50);
            //System.out.println(guessingGame[1][i]); // 可以保留用来调试AI数字

            //用户输入数字
            System.out.println("Please enter a number within the range of 0-49");
            int userGuess = input.nextInt();
            input.nextLine(); // 再次清空换行符
            guessingGame[0][i] = userGuess;

            // 判断是否猜对
            for(int j = 0; j<y; j++){
                if(guessingGame[0][i] == guessingGame[1][j]){
                    System.out.println("Correct!");
                    counter++;
                    break;
                }
            }
        }
        // 游戏结束后可以显示猜对次数
        System.out.println("Game over! You guessed correctly " + counter + " times.");
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 18:17:53