如果陈述不起作用,Rock Paper Scissor

Hor*_*ode 1 java

当我运行它时,它会显示System.out.println("")案例中的所有语句.如何让它选择正确的if陈述而不是别的?

如果我能在找到结果后回到起点,那也会有所帮助.

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

public class TEST {
private static Scanner myScanner;

public static void main(String[] args) {
    myScanner = new Scanner(System.in);
    Random myRandom = new Random();
    int randomNumber;
    char reply;
    System.out.print("Rock(R) Paper(P) or Scissors(S)?  ");
    reply = myScanner.findWithinHorizon(".", 0).charAt(0);
    randomNumber = myRandom.nextInt(3) + 1;
    switch (randomNumber) {
    case 1:
            if (reply == 'S' || reply == 's'); {
            System.out.println("Computer: Rock. You lost!");
            }
            if (reply == 'R' || reply == 'r'); {
            System.out.println("Computer: Rock. You tied!");
            }
            if (reply == 'P' || reply == 'p'); {
            System.out.println("Computer: Rock. You won!");
            break;
            }
    case 2:
            if (reply == 'P' || reply == 'p'); {
            System.out.println("Computer: Paper. You tied!");
            }
            if (reply == 'S' || reply == 's'); {
            System.out.println("Computer: Paper. You won!");
            }
            if (reply == 'R' || reply == 'r'); {
            System.out.println("Computer: Paper. You lost!");
            break;
            }   
    case 3:
            if (reply == 'R' || reply == 'r'); {
            System.out.println("Computer: Scissor. You won!");
            }
            if (reply == 'P' || reply == 'p'); {
            System.out.println("Computer: Scissor. You lost!");
            }
            if (reply == 'S' || reply == 's'); {
            System.out.println("Computer: Scissor. You tied!");
            break;
            }               
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Jea*_*sky 5

你有两个问题:

1)你的if语句没有运行,因为它们以分号结尾.这意味着{}中的代码形成一个块并以任一方式运行.

2)你的休息是在错误的地方.如果选择'R'(或'r'),第一个只会中断.如果案例运行,后来会中断.

    if (reply == 'P' || reply == 'p'); {
    System.out.println("Computer: Paper. You tied!");
    }
    if (reply == 'S' || reply == 's'); {
    System.out.println("Computer: Paper. You won!");
    }
    if (reply == 'R' || reply == 'r'); {
    System.out.println("Computer: Paper. You lost!");
    break;
    }
Run Code Online (Sandbox Code Playgroud)

VS

    if (reply == 'P' || reply == 'p') {
    System.out.println("Computer: Paper. You tied!");
    }
    if (reply == 'S' || reply == 's') {
    System.out.println("Computer: Paper. You won!");
    }
    if (reply == 'R' || reply == 'r') {
    System.out.println("Computer: Paper. You lost!");
    }
    break;
Run Code Online (Sandbox Code Playgroud)

此外,如评论中所建议,您可以使用循环来提示输入.例如:

while (! done) {
  System.out.print("Rock(R) Paper(P) or Scissors(S)?  (or Quit(Q) ");
  reply = myScanner.findWithinHorizon(".", 0).charAt(0);
  // more code here
}
Run Code Online (Sandbox Code Playgroud)

这里你需要另一个案例,这样你就可以将done设置为true并结束循环.