gpt4 book ai didi

java - 调用 Java 中另一个循环中创建的变量,以及如何在 do...while 循环中具有多个条件

转载 作者:行者123 更新时间:2023-12-01 23:27:19 25 4
gpt4 key购买 nike

我正在为学校类制作一个石头剪刀布游戏。我让一切正常工作,除了在回答无效选择时设置一些东西来重述问题。我认为 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!");
}
}

最佳答案

有几件事跳出来:

  1. 在 Java(以及语法上源自 B 的大多数其他语言)中,逻辑 AND 运算符是 &&,而不是 &( & 是一个数学运算符,执行按位 boolean OR)。

    所以

    if (P1 == 1 && P2 == 1)
    // ^^---- &&, not &
  2. 在 Java 中,变量具有 block 作用域。这意味着在 block 内声明的变量仅在该 block (及其包含的任何 block )内可用,而在该 block 外部不可用。因此,您在此处的循环内定义的 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;
  3. 在任何逻辑条件(包括 while 的条件)中,要组合多个条件,可以使用逻辑运算符 &&(“and”)和 ||(“或”),而不是分号(;)。例如:

    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"
  4. 您进行了三种不同的测试来查看是否平局,并且通常您会对相同条件进行大量重新测试(大量 P1 == 1P2 == 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");
    }
    }
  5. (更高级) 查看enum。在我重新设计你的逻辑时,我只是相信你的逻辑是正确的,因为我不知道 123 是什么时候看代码。 (显然,我可以在更高的位置查看您输出的消息。)使用 enum 将使代码更加清晰。 (if (P2 == RPS.Paper))

我建议学习一些 Java 指导教程。甲骨文has several .

关于java - 调用 Java 中另一个循环中创建的变量,以及如何在 do...while 循环中具有多个条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19787536/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com