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

标签 java

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

//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();
    }
}

关于java - 我正在尝试添加重播或结束游戏的选项。另外,我的结果没有正确弹出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54976066/

相关文章:

java - 用于多个 recyclerview 的单个适配器

java - Java中如何将字符串转换为日期?

java - 配置为使用 SSL 的 Tomcat6 不起作用

java - Java 浮点危险可以通过舍入来避免吗?

JAVA .equalsIgnoreCase 不工作

java - 在 OSGi 环境中使用 OPCPackage 从类路径加载文件

Java Android - 过滤传入的短信

java - 用于 javafx (jdk8u201) 的 cloudbuild.yaml 以及其他依赖项

java - 扩展 Java Play 框架中的默认访问第三方方法

java - 拥有仅使用 Java 内存的自定义文件实现的最简单方法是什么