首页 > 解决方案 > 创建一个猜谜游戏

问题描述

我不确定哪个是该程序的最佳循环周期:for、while 或 do-while。

首先,应用程序要求用户猜一个名字。如果用户的猜测是正确的,打印“Congratulation!” 并退出循环。如果答案不正确,应用程序会再次询问。用户可以通过键入“停止”来停止猜测。最后,打印用户猜了多少次。

重要 - 正确答案是艾玛。

如果猜测是 Olivia、Ava 和 Emma,控制台中的输出应该是:

Guess my name (type stop to exit)

Olivia

Guess my name (type stop to exit)

Ava
Guess my name (type stop to exit)

Emma

Congratulations!

You guessed 3 times.

小费!首先创建游戏,这样就只问问题一次。之后,尝试制作循环结构。您应该使用 for、while 还是 do-while?

我尝试执行以下操作,但现在我迷路了


import java.util.Scanner;

import java.util.ArrayList;

public class main {

    public static void main(String[] args) {
        
        Scanner user = new Scanner(System.in);
        String guess1;
        String guess2;
        String guess3;
        String guess4;
        
        ArrayList<String> nimet = new ArrayList<>();
        
        nimet.add("Olivia");
        nimet.add("Ava");
        nimet.add("Emma");
        nimet.add("Charlotte");
        
        
        do {
            
        String stop = "stop";
                
        System.out.println("Guess my name (type stop to exite)");
        guess1 = user.nextLine();
            
            if (guess1.equals(stop)) {
                
                break;
                
            } 
            
        System.out.println("Guess my name (type stop to exite)");
        guess2 = user.nextLine();
                
            if (guess2.equals(stop)) {
                    
                break;
                    
            }
            
        System.out.println("Guess my name (type stop to exite)");
        guess3 = user.nextLine();
                
            if (guess3.equals(stop)) {
                    
                break;
                    
            } 
            
        System.out.println("Guess my name (type stop to exite)");
        guess4 = user.nextLine();
                    
            if (guess4.equals(stop)) {
                        
                break;
                        
                } 
            
            
            
        
        } while (!guess1.equals(nimet.get(0)) && !guess1.equals(nimet.get(1)) && !guess1.equals(nimet.get(2)) && !guess1.equals(nimet.get(3)));
        
            while (true) {
                
            if (guess1.equals(nimet.get(0)) && guess1.equals(nimet.get(1)) && guess1.equals(nimet.get(2)) && guess1.equals(nimet.get(3))) {
                
                System.out.println("Congratulations!\n" + "You guessed 3 times.");
                

                
            } 
        }   
    }

}

标签: java

解决方案


我认为 do-while 是最适合这个问题的概念,因为有一个动作(要求猜测)至少要完成一个并在循环中重复。

当然 for、while 和 do-while 结构是等价的,因为可以模拟其他结构。这只是一个风格决定。


推荐阅读