如何让用户多次尝试?

问题描述

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

/*
 *  1) the user can attempt many times and you need to display the number of successful attempt
 *  2) the range of random number 1..49
 *  3) output >> You successfully guess the number in 16 attempts
 *  4) output >> Do you want to play again?
 * */

public class GuessingGame {

    public static void main(String[] args) {
        Scanner uInput = new Scanner(system.in);
        Random randNum = new Random();
        int guessNumber,number,count=0;
        String in;
        char again; 
        
        System.out.println("Welcome to Guessing Game");
        do {
                number = randNum.nextInt(50); // random number in the range of 1..50
        
                for(int i=0; i<5; i++)
                {
                    System.out.println("Enter a number to guess: ");
                    guessNumber = uInput.nextInt(); // get guess number from user
                    
                    if(guessNumber > number)
                    {
                        System.out.println("Too big");
                    }else if(guessNumber < number)
                    {
                        System.out.println("Too small");
                    }else
                    {
                        System.out.println("Success");
                        count+=1;
                        return;
                    }
                }
                System.out.println("You successfully guess the number in "+count);
                System.out.println("Do you want to play again? ");
                in = uInput.nextLine();
                
                again = in.charat(0); //again will hold the first character from in var
                
        }while(again =='Y'|| again =='y');
        System.out.println("Guessing game terminate,thank you");
    }
}

解决方法

public static void main(String[] args) {
    System.out.println("Welcome to Guessing Game");
    guessNumber();
    System.out.println("Guessing game terminate,thank you");
}

private static void guessNumber() {
    Scanner uInput = new Scanner(System.in);
    Random randNum = new Random();
    int guessNumber,number,count = 0;
    String in;
    char again;
    boolean isCorrect = false;


    number = randNum.nextInt(50); // random number in the range of 1..50

    while (!isCorrect) {
        System.out.println("Enter a number to guess: ");
        guessNumber = uInput.nextInt(); // get guess number from user

        count += 1;

        if (guessNumber > number) {
            System.out.println("Too big");
        } else if (guessNumber < number) {
            System.out.println("Too small");
        } else {
            System.out.println("Success");
            isCorrect = true;
        }
    }

    System.out.println("You successfully guess the number in " + count + " attempts");
    System.out.println("Do you want to play again? yes/no");
    in = uInput.next();

    again = in.charAt(0); //again will hold the first character from in var
    if (again == 'Y' || again == 'y') {
        guessNumber();
    }
}
,

您所要做的就是用 while 循环替换 do while 循环。但关键是您必须将初始值 'Y' 设置为您的再次字符以启动 while 循环。循环的条件将是相同的。代码将类似于:char again = 'Y';

    while (again == 'Y' || again == 'y') {
        System.out.println("Welcome to Guessing Game");
        number = randNum.nextInt(50);

        for (int i = 0; i < 5; i++) {
            System.out.println("Enter a number to guess: ");
            guessNumber = uInput.nextInt();

            if (guessNumber > number) {
                System.out.println("Too big");
            } else if (guessNumber < number) {
                System.out.println("Too small");
            } else {
                System.out.println("Success");
                count += 1;
                break;
            }
        }

        System.out.println("You have successfully guessed the number for " + count + " times");
        System.out.println("Do you want to play again? ");
        in = uInput.next();

        again = in.charAt(0); //again will hold the first character from in var
    }

    System.out.println("Guessing game terminate,thank you");

我必须注意,您的 count 变量包含用户成功猜出该数字的游戏次数,而不是单个游戏中的尝试次数。如果您也想处理这个问题,请在 while 循环内创建 attempts 变量并在用户尝试时增加它。 此外,我将 in = uInput.nextLine(); 行更改为 in = uInput.next();,因为我相信您的扫描仪输入将被跳过。