Java 如果报表不起作用,请使用岩石剪纸机

Java 如果报表不起作用,请使用岩石剪纸机,java,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

当我运行此命令时,它会显示案例中的所有
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;
            }               
        }
    }
}

您在if之后添加了一个额外的

if语句的语法为:

if(condition){
    Expressions;
}
分号表示:

if(condition)
    ; //empty line, effectively ignores the if
{
    Expressions;
}

您在if之后添加了一个额外的

if语句的语法为:

if(condition){
    Expressions;
}
分号表示:

if(condition)
    ; //empty line, effectively ignores the if
{
    Expressions;
}
你有两个问题:

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

此外,正如注释中所建议的,您可以使用循环来提示输入。例如:

while (! done) {
  System.out.print("Rock(R) Paper(P) or Scissors(S)?  (or Quit(Q) ");
  reply = myScanner.findWithinHorizon(".", 0).charAt(0);
  // more code here
}
您需要在此处使用另一个case,以便将done设置为true并结束循环。

您有两个问题:

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

此外,正如注释中所建议的,您可以使用循环来提示输入。例如:

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

您需要另一个案例,以便将done设置为true并结束循环。

奖励练习:思考如何进一步简化程序,避免不必要的重复。使用
Character.toLowerCase
,并为用户输入指定数值,这样做类似减法的操作可以帮助轻松确定赢/输状态。奖励练习:考虑如何进一步简化程序,避免不必要的重复。使用
Character.toLowerCase
,并为用户输入指定数值,这样做类似减法的操作有助于轻松确定赢/输状态。还可以添加有关在
过程中添加
的注释,以重复程序,直到用户输入类似
X
的内容退出。(OP询问此问题)还可以添加一条注释,说明如何添加
while
循环以重复程序,直到用户输入类似
X
的内容以退出。(OP要求这样做)