Java 我正在尝试添加一个选项来重播或结束游戏。而且,我的结果不是';不能正常弹出

Java 我正在尝试添加一个选项来重播或结束游戏。而且,我的结果不是';不能正常弹出,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 = "

我正在尝试将退出选项添加到此代码中。此外,我的结果无法正确阅读,我也不确定我做错了什么。我尝试过使用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);
    }
}

我假设你希望在“赢”的情况下结束游戏,在“输”的情况下继续游戏。假设代码可以像下面这样修改

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;
            }
        }

我假设你希望在“赢”的情况下结束游戏,在“输”的情况下继续游戏。假设代码可以像下面这样修改

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;
            }
        }

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


//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.util.Random;
导入java.util.Scanner;
期中公开课{
公共静态void main(字符串[]args){
扫描仪s=新的扫描仪(System.in);
//创建随机类对象
随机=新随机();
字符串[]选项=新字符串[]{“剪刀”、“石头”、“纸”};
智力选择;
//提示用户
系统输出打印(“剪刀(0)、石头(1)、纸张(2):”;
while(true){
试一试{
字符串结果=”;
//阅读用户选择
choice=Integer.parseInt(s.nextLine());
如果(选项<0 | |选项>2){
抛出新异常();
}
//从0、1、2生成一个随机数
int pick=random.nextInt(3);
如果(选项==拾取)
结果=“这是一场平局”;
如果((choice==0)和&(pick==2))| |((choice==1)和&(pick==0))
||((选择==2)和&(选择==1)))
结果=“你赢了”;
其他的
结果=“你输了”;
System.out.println(“计算机是“+choices[pick]+”。您是“+choices[choice]+”+结果);
System.out.print(“是否要再次播放?是(0),否(1):”;
while(true){
试一试{
//阅读用户选择
choice=Integer.parseInt(s.nextLine());
如果(选项<0 | |选项>1){
抛出新异常();
}
如果(选项==0)
系统输出打印(“剪刀(0)、石头(1)、纸张(2):”;
打破
}捕获(例外e){
System.out.println(“无效输入”);
System.out.print(“是否要再次播放?是(0),否(1):”;
}
}
如果(选项==1){
打破
}
}捕获(例外e){
System.out.println(“无效输入”);
系统输出打印(“剪刀(0)、石头(1)、纸张(2):”;
}
}
s、 close();
}
}

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


//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.util.Random;
导入java.util.Scanner;
期中公开课{
公共静态void main(字符串[]args){
扫描仪s=新的扫描仪(System.in);
//创建随机类对象
随机=新随机();
字符串[]选项=新字符串[]{“剪刀”、“石头”、“纸”};
智力选择;
//提示用户
系统输出打印(“剪刀(0)、石头(1)、纸张(2):”;
while(true){
试一试{
字符串结果=”;
//阅读用户选择
choice=Integer.parseInt(s.nextLine());
如果(选项<0 | |选项>2){
抛出新异常();
}
//从0、1、2生成一个随机数
int pick=random.nextInt(3);
如果(选项==拾取)
结果=“这是一场平局”;
如果((choice==0)和&(pick==2))| |((choice==1)和&(pick==0))
||((选择==2)和&(选择==1)))
结果=“你赢了”;
其他的
结果=“你输了”;
System.out.println(“计算机是“+choices[pick]+”。您是“+choices[choice]+”+结果);
System.out.print(“是否要再次播放?是(0),否(1):”;
while(true){
试一试{
//阅读用户选择
choice=Integer.parseInt(s.nextLine());
如果(选项<0 | |选项>1){
抛出新异常();
}
如果(选项==0)
系统输出打印(“剪刀(0)、石头(1)、纸张(2):”;
打破
}捕获(例外e){
System.out.println(“无效输入”);
System.out.print(“是否要再次播放?是(0),否(1):”;
}
}
如果(选项==1){
打破
}
}捕获(例外e){
System.out.println(“无效输入”);
系统输出打印(“剪刀(0)、石头(1)、纸张(2):”;
}
}
s、 close();
}
}