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

如何避免Java猜国家游戏中else语句重复执行?

解决猜国家游戏重复输出错误提示的问题

你的问题出在循环内每次遇到不匹配的国家就输出错误信息,数组里有多少个不匹配的国家,就会重复输出多少次错误提示。下面是两种简单的修复方案:

方案一:使用匹配标记变量

先定义一个布尔变量记录是否找到匹配的国家,遍历完所有国家后统一输出结果,这样只会输出一次提示:

package guessinggame;
import java.util.Scanner;
public class GuessingGame {
    public static void main(String[] args) {
        String ans;
        String[] countries = {"Philippines", "Brunei", "Burma", "Cambodia", 
            "Timor Leste", "Indonesia", "Laos", "Malaysia", "Singapore", "Thailand", "Vietnam"};
        
        Scanner sc=new Scanner(System.in);  
        
        System.out.println("Please enter a Southeast Asian country");
        ans = sc.nextLine();
        
        boolean isCorrect = false;
        // 遍历数组,仅标记是否匹配,不输出结果
        for (int x=0; x<countries.length; x++) {
            if (ans.equals(countries[x])){
                isCorrect = true;
                break; // 找到匹配后直接跳出循环,无需继续遍历
            }
        }
        // 遍历结束后统一输出结果
        if (isCorrect) {
            System.out.println("Your answer (" + ans + ") is correct.");  
        } else {
            System.out.println("Your answer (" + ans + ") is incorrect.");
        }
    }
}

方案二:找到匹配后立即终止循环

在找到正确国家时输出提示并跳出循环,若循环正常结束(说明未找到匹配项),再输出错误提示:

package guessinggame;
import java.util.Scanner;
public class GuessingGame {
    public static void main(String[] args) {
        String ans;
        String[] countries = {"Philippines", "Brunei", "Burma", "Cambodia", 
            "Timor Leste", "Indonesia", "Laos", "Malaysia", "Singapore", "Thailand", "Vietnam"};
        
        Scanner sc=new Scanner(System.in);  
        
        System.out.println("Please enter a Southeast Asian country");
        ans = sc.nextLine();
        
        boolean found = false;
        for (int x=0; x<countries.length; x++) {
            if (ans.equals(countries[x])){
                System.out.println("Your answer (" + ans + ") is correct.");  
                found = true;
                break; // 找到匹配后终止循环,避免多余遍历
            }
        }
        // 循环结束后若未找到匹配,输出错误提示
        if (!found) {
            System.out.println("Your answer (" + ans + ") is incorrect.");
        }
    }
}

额外优化建议

如果想忽略输入的大小写(比如用户输入philippines也能匹配成功),可以把ans.equals(countries[x])改成ans.equalsIgnoreCase(countries[x]),提升游戏的交互友好性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 22:20:33