我正在尝试添加一个选项来重播或结束游戏。另外,我的结果没有正确弹出



我正在尝试将退出选项添加到此代码中。另外,我的结果不会正确阅读,我不确定我在做什么错。我尝试使用循环时使用do,但我似乎无法将其放在正确的位置。

//import Scanner Class
import java.util.Scanner;
import java.util.Random;
public class JavaMidterm {
    public static void main(String[] args) {
        String result = " ", symbola = " ", symbolb = " ";
        Scanner s = new Scanner(System.in);
        //prompt user
        System.out.print("Scissor (0), rock (1), paper (2): ");
        // read user choice
        int choice=s.nextInt();
        //Create random class object
        Random random = new Random();
        //Generate a random number from 0, 1, 2
        int pick = random.nextInt(3);
        if(choice == pick)
            result = "It is a draw";
        else {
            if (((choice == 0) && (pick == 2)) || ((choice == 1) && (pick ==0)) || ((choice == 2) && (pick == 1)) )
                result = "You won";
            else
                result = "You lose";
        }
        if(pick == 0)
            symbola = "Scissor";
        if(choice == 0)
            symbolb = "Scissor";
            //assigning symbols to the corresponding values
        if(pick == 1)
            symbolb = "Rock";
        if(pick == 2)
            symbola = "Paper";
        if(choice == 2)
            symbolb = "Paper";
        System.out.println("The computer is" +
            symbola + ". You are" + symbolb + ". " + result);
    }
}

您可以在下面尝试我的解决方案。我还包括检查无效输入。我还简化了您的结果检查。


//import Scanner Class
import java.util.Random;
import java.util.Scanner;
public class JavaMidterm {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        // Create random class object
        Random random = new Random();
        String[] choices = new String[] { "Scissor", "Rock", "Paper" };
        int choice;
        // prompt user
        System.out.print("Scissor (0), rock (1), paper (2): ");
        while (true) {
            try {
                String result = "";
                // read user choice
                choice = Integer.parseInt(s.nextLine());
                if (choice < 0 || choice > 2) {
                    throw new Exception();
                }
                // Generate a random number from 0, 1, 2
                int pick = random.nextInt(3);
                if (choice == pick)
                    result = "It is a draw";
                else if (((choice == 0) && (pick == 2)) || ((choice == 1) && (pick == 0))
                        || ((choice == 2) && (pick == 1)))
                    result = "You won";
                else
                    result = "You lose";
                System.out.println("The computer is " + choices[pick] + ". You are " + choices[choice] + ". " + result);
                System.out.print("Do you want to play again? Yes (0), No (1): ");
                while (true) {
                    try {
                        // read user choice
                        choice = Integer.parseInt(s.nextLine());
                        if (choice < 0 || choice > 1) {
                            throw new Exception();
                        }
                        if (choice == 0)
                            System.out.print("Scissor (0), rock (1), paper (2): ");
                        break;
                    } catch (Exception e) {
                        System.out.println("Invalid input.");
                        System.out.print("Do you want to play again? Yes (0), No (1): ");
                    }
                }
                if (choice == 1) {
                    break;
                }
            } catch (Exception e) {
                System.out.println("Invalid input.");
                System.out.print("Scissor (0), rock (1), paper (2): ");
            }
        }
        s.close();
    }
}

我假设您希望在"胜利"的情况下结束游戏,并在"失败"的情况下继续游戏。假设可以像以下那样修改代码,

boolean isGoodToContinue = true;
    while (isGoodToContinue) {
        String result = " ", symbola = " ", symbolb = " ";
        Scanner s = new Scanner(System.in);
        // prompt user
        System.out.print("Scissor (0), rock (1), paper (2): ");
        // read user choice
        int choice = s.nextInt();
        // Create random class object
        Random random = new Random();
        // Generate a random number from 0, 1, 2
        int pick = random.nextInt(3);
        if (choice == pick)
            result = "It is a draw";
        else {
            if (((choice == 0) && (pick == 2)) || ((choice == 1) && (pick == 0))
                    || ((choice == 2) && (pick == 1))) {
                result = "You won";
                isGoodToContinue = false;
            }
            else {
                result = "You lose";
                isGoodToContinue = true;
            }
        }

相关内容

最新更新