java - if-else 石头剪刀布游戏

标签 java if-statement

我不明白为什么我的程序终止。例如,如果我说用户输入很稳定,它有时会说它是平局或什么也没有发生/终止。我尝试在不同的类区域中运行它的一些部分,但当我输入一个值时,它仍然不会在 if/else 语句中输出我想要的结果。 我知道计算机选择和用户输入的代码是正确的。我相信我搞砸了 if/else。如果我错了请纠正我..

public static void main(String[] args) {
    Scanner keyboard = new Scanner(System.in);
    int compVal = (int) (3*Math.random()) +1;
    char compChoice;
    if (compVal == 1) {
        compChoice = 'R';
    } else if (compVal == 2) {
        compChoice = 'P';
    } else {
        compChoice = 'S';
    }
    System.out.println("Rock, Paper, Scissors-Enter a choice R/P/S: ");
    String mine = keyboard.nextLine();
    char myChoice = mine.charAt(0);
    myChoice = Character.toUpperCase(myChoice);
    if (myChoice == (compChoice)) {
        System.out.println("We both chose the same item-try again");
    } else if (myChoice == ('R')) {
        if (compChoice == 'P') {
            System.out.println("I chose Paper and you chose Rock: Paper covers rock, so I win");
        }
    } else if (myChoice == ('R')) {
        if (compChoice == ('S')) {
            System.out.println("I chose Scissors and you choise Rock: Rock breaks Scissors, so you win");
        }
    } else if (myChoice == ('P')) {
        if (compChoice == ('S')) {
            System.out.println("I chose Scissors and you chose Paper: Scissors cuts Paper, so I win");
        }
    } else if (myChoice == ('P')) {
        if (compChoice == ('R')) {
            System.out.println("I chose Rock and you chose Paper: Paper covers Rock, so you win");
        }
    } else if (myChoice == ('S')) {
        if (compChoice == ('P')) {
            System.out.println("I chose Paper and you chose Scissors: Scissors cuts Paper, so you win");
        }
    } else if (myChoice == ('S')) {
        if (compChoice == ('R')) {
            System.out.println("I chose Rock and you chose Scissors: Rock breaks Scissors, so I win");
        }
    }
} 

最佳答案

您有多个永远无法执行的 if/else 语句。

考虑这段代码

if (myChoice == ('R')) {
    if (compChoice == 'P') {
        System.out.println("I chose Paper and you chose Rock: Paper covers rock, so I win");
    }
} else if (myChoice == ('R')) { // this will ONLY execute if the previous if statement is false.

每隔一个 if 子句都无法执行,因为您已经检查了该条件。即选择不能是 R,因为如果是的话,它就会执行前一个 block 。最简单的解决方案是删除重复项,因为您不需要它们。

} else if (myChoice == ('R')) {
    if (compChoice == 'P') {
        System.out.println("I chose Paper and you chose Rock: Paper covers rock, so I win");
    }
    if (compChoice == ('S')) {
        System.out.println("I chose Scissors and you choise Rock: Rock breaks Scissors, so you win");
    }

甚至

} else if (myChoice == 'R') {
    if (compChoice == 'P') 
        System.out.println("I chose Paper and you chose Rock: Paper covers rock, so I win");
    else
        System.out.println("I chose Scissors and you choise Rock: Rock breaks Scissors, so you win");
} else

关于java - if-else 石头剪刀布游戏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32659949/

相关文章:

Python 3.2.2 IF 在 IDLE 中运行与从桌面运行时的行为不同

c - if-else 语句处理

java - Java 日期格式解析错误

java - SLF4J 关于多重绑定(bind)的警告

java - 通过取消选中复选框错误默认禁用编辑文本

c - C 语言编程 计算字符串中的字符

java - 类不是抽象类?

java - 用户离线时消息传递

Python 如果 N 个变量中有一个以上为真

c++ - 翻转逻辑表达式