java - 输入验证和再次播放循环JAVA作业时出现问题

标签 java loops variable-assignment

我的 CS1 类(class)作业是创建一个类似于石头剪刀布的游戏。输入为 1、2、3、4 和 5。我需要帮助弄清楚如何提示用户输入正确的输入,以防用户输入的数字不是 1-5。我还需要帮助插入“再玩一次?”环形。请帮助我,我很困难。我真的很挣扎。

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

public class Moropinzee {
    public static void main(String[] args) {
        String personPlay1;
        String personPlay2;
        String response;

        Scanner scan = new Scanner(System.in);
        Random generator = new Random();

        System.out.println("Hey, Let's Play Moropinzee!\n" + "Please enter a move.\n"
                + "Monkey = 1, Robot = 2, Pirate = 3, Ninja= 4, and Zombies = 5.");

        System.out.println("Player 1 plays: ");
        personPlay1 = scan.next();

        System.out.println("Player 2 plays ");
        personPlay2 = scan.next();

        if (personPlay1.equals(personPlay2))
            System.out.println("It's a tie!");

        else if (personPlay1.equals("1"))
            if (personPlay2.equals("2"))
                System.out.println("Monkey unplugs Robot. Player 1 win!!");
        if (personPlay1.equals("2"))
            if (personPlay2.equals("1"))
                System.out.println("Monkey unplugs Robot. Player 2 win!!");

        if (personPlay1.equals("1"))
            if (personPlay2.equals("3"))
                System.out.println("Pirate skewers Monkey. Player 2 win!!");
        if (personPlay1.equals("3"))
            if (personPlay2.equals("1"))
                System.out.println("Pirate skewers Monkey. Player 1 win!!");

        if (personPlay1.equals("1"))
            if (personPlay2.equals("4"))
                System.out.println("Monkey fools Ninja. Player 1 win!!");
        if (personPlay1.equals("4"))
            if (personPlay2.equals("1"))
                System.out.println("Monkey fools Ninja. Player 2 win!!");

        if (personPlay1.equals("1"))
            if (personPlay2.equals("5"))
                System.out.println("Zombie savages Monkey. Player 2 win!!");
        if (personPlay1.equals("5"))
            if (personPlay2.equals("1"))
                System.out.println("Zombie savages Monkey. Player 1 win!!");

        if (personPlay1.equals("2"))
            if (personPlay2.equals("3"))
                System.out.println("Pirate drowns Robot. Player 2 win!!");
        if (personPlay1.equals("3"))
            if (personPlay2.equals("2"))
                System.out.println("Pirate drowns Robot. Player 1 win!!");

        if (personPlay1.equals("2"))
            if (personPlay2.equals("4"))
                System.out.println("Robot chokes Ninja. Player 1 win!!");
        if (personPlay1.equals("4"))
            if (personPlay2.equals("2"))
                System.out.println("Robot chokes Ninja. Player 2 win!!");

        if (personPlay1.equals("2"))
            if (personPlay1.equals("5"))
                System.out.println("Robot crushes Zombie. Player 1 win!!");
        if (personPlay1.equals("5"))
            if (personPlay1.equals("2"))
                System.out.println("Robot crushes Zombie. Player 2 win!!");

        if (personPlay1.equals("3"))
            if (personPlay2.equals("4"))
                System.out.println("Ninja karate chops Pirate. Player 2 win!!");
        if (personPlay1.equals("4"))
            if (personPlay2.equals("3"))
                System.out.println("Ninja karate chops Pirate. Player 1 win!!");

        if (personPlay1.equals("3"))
            if (personPlay2.equals("5"))
                System.out.println("Zombie eats Pirate. Player 2 win!!");
        if (personPlay1.equals("5"))
            if (personPlay2.equals("3"))
                System.out.println("Zombie eats Pirate. Player 1 win!!");

        if (personPlay1.equals("4"))
            if (personPlay2.equals("5"))
                System.out.println("Ninja decapitates Zombie. Player 1 win!!");
        if (personPlay1.equals("5"))
            if (personPlay2.equals("4"))
                System.out.println("Ninja decapitates Zombie. Player 2 win!!");

            else {

            }

    }
}

最佳答案

首先考虑为您的消息创建一个数组

String [][] msgs = new String [6][6];
msgs[1][2] = "Monkey unplugs Robot. Player 1 win!!";
msgs[2][1] = "Monkey unplugs Robot. Player 2 win!!";
// etc

Scanner scan = new Scanner(System.in); 
// get input
while (true) {
    System.out.println("enter number 1 or -1 to quit");
    int num1 = scan.nextInt();
    if (num1 == -1) break;
    if (num1 < 1 || num1> 5) {
        continue;
    }
    System.out.println("enter number 2");
    int num2 = scan.nextInt();
    if (num2 < 1 || num2> 5) {
        continue;
    }

    System.out.println(msgs[num1][num2]);
}

当然,您需要将所有消息添加到数组中,并且您可能想要对无效输入进行进一步测试,但至少此方法可以防止大量重复代码

关于java - 输入验证和再次播放循环JAVA作业时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52733651/

相关文章:

java - 将 Firestore 时间戳存储到 ArrayList<String>,然后存储到日期

bash - 限制循环中进程的cpu限制

c - 根据 strlen,在 fgets 调用后写入 char 数组会导致它为空

python - 未绑定(bind)本地错误 : local variable referenced before assignment (Python)

java - 当我们在 hibernate 中删除实体时会检查版本吗?

java - 从两个 Flux 生成 Flux<Result>

python - 在python中每次只比较多个列表一次

javascript - 检查 javascript 数组中的最后一项

php - 当其中一个键被赋值时,数组是否在 PHP 中隐式创建?

java - 使用 jdb : "Error: impossible to find or load the main class" 在 java 中进行调试