我正在为学校的课堂创建一个石头剪刀布游戏。除了设置一些内容以回答无效的选择时,我可以进行所有工作。我认为do ... while语句在这里是最好的,但是我意识到我正在循环的“ do”部分中调用一个变量。因此,由于它正在从另一个循环中进行调用,因此无法找到该变量。另外,在我的while语句中,我是否正确列出了可接受的变量?我敢肯定,我只是弥补了这一部分。
非常感谢您的帮助!
import java.util.Scanner;
public class RockPaperScissorsTest {
public static void main(String[] args) throws Exception {
Scanner input = new Scanner(System. in );
do {
System.out.println("Player 1, choose 1 for rock, 2 for paper, or 3 for scissors.");
int P1 = input.nextInt();
} while (P != 1; P1 != 2; P1 != 3);
System.out.println("");
System.out.println("");
System.out.println("");
do {
System.out.println("Player 2, choose 1 for rock, 2 for paper, or 3 for scissors.");
int P2 = input.nextInt();
} while (P2 != 1; P2 != 2; P2 != 3);
if (P1 == 1 & P2 == 1)
System.out.println("It's a tie!");
if (P1 == 1 & P2 == 2)
System.out.println("Player 2 wins!");
if (P1 == 1 & P2 == 3)
System.out.println("Player 1 wins!");
if (P1 == 2 & P2 == 1)
System.out.println("Player 1 wins!");
if (P1 == 2 & P2 == 2)
System.out.println("It's a tie!");
if (P1 == 2 & P2 == 3)
System.out.println("Player 2 wins!");
if (P1 == 3 & P2 == 1)
System.out.println("Player 2 wins!");
if (P1 == 3 & P2 == 2)
System.out.println("Player 1 wins");
if (P1 == 3 & P2 == 3)
System.out.println("It's a tie!");
}
}
跳出了几件事:
在Java(以及从B语法上派生的大多数其他语言)中,逻辑AND运算符&&
不是,&
(&
是数学运算符,是按位布尔或)。
所以
if (P1 == 1 && P2 == 1)
// ^^---- &&, not &
在Java中,变量具有块作用域。这意味着在一个块内声明的变量仅在该块(及其包含的任何块)内可用,而在该块外不可用。因此,P2
您要在循环中定义以下内容:
do {
System.out.println("Player 2, choose 1 for rock, 2 for paper, or 3 for scissors.");
int P2 = input.nextInt();
// ^----------------------------- here
} while (/*...*/);
...将仅在循环内可用,而不是在循环后可用。您需要在循环外声明该变量。(P1
当然,与相似)。在这种情况下,最佳位置是函数的顶部:
int P1, P2;
在任何逻辑条件(包括的条件while
)中,要组合多个条件,请使用逻辑运算符&&
(“ and”)和||
(“ or”),而不是分号(;
)。因此,例如:
do {
System.out.println("Player 2, choose 1 for rock, 2 for paper, or 3 for scissors.");
P2 = input.nextInt();
} while (P2 != 1 && P2 != 2 && P2 != 3);
// ^^---------^^---- "If P2 is not 1 AND P2 is not 2 AND P2 is not 3"
你有三个不同的测试,看它是否是一个领带,只是一般你做了很多相同的条件下再测试(大量的P1 == 1
,P2 == 2
等等)。您可以仅通过检查是否来测试平局P1 == P2
,并且可以使用来显着减少条件检查的次数else
,例如:
if (P1 == P2) {
System.out.println("It's a tie!");
}
else if (P1 == 1) {
if (P2 == 2) {
System.out.println("Player 2 wins!");
}
else {
System.out.println("Player 1 wins!");
}
}
else if (P1 == 2) {
if (P2 == 1) {
System.out.println("Player 1 wins!");
}
else {
System.out.println("Player 2 wins!");
}
}
else { // P1 == 3
if (P2 == 1) {
System.out.println("Player 2 wins!");
}
else {
System.out.println("Player 1 wins");
}
}
(更先进的)查找到enum
秒。在我返工你的逻辑,我只是相信,你的逻辑是正确的,因为我不知道是什么1
,2
或者3
是看代码的时候。(显然,在更高的位置,我可以查看您输出的消息。)使用enum
可以使代码更清晰。(if (P2 == RPS.Paper)
)
我建议您阅读一些Java指导教程。甲骨文有几个。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句