繁体   English   中英

Java:变量持有者及其价值?

[英]Java: Variable holder and its value?

我很难在一本书(完全初学者)的练习中理解某些东西。

示例代码是用三个玩家制作一个猜谜游戏,它为所有三个玩家生成一个随机int,它必须与游戏中随机生成的int相同。

代码包含三个类,但这是我有一个问题的最重要的类。 另外两个是GameLauncher类和Player(与其他三个玩家对战)类。

public class GuessGame {

Player p1;
Player p2;
Player p3;

public void startGame(){
    p1 = new Player();
    p2 = new Player();
    p3 = new Player();

    int guessp1 = 10;
    int guessp2 = 0;
    int guessp3 = 0;

    boolean p1isRight = false;
    boolean p2isRight = false;
    boolean p3isRight = false;

    int targetNumber = (int) (Math.random() * 10);
    System.out.println("I'm thinking of a number between 0 and 9...");

    while(true){
        System.out.println("Number to guess is "+targetNumber);

        p1.guess();
        p2.guess();
        p3.guess();

        guessp1 = p1.number;
        System.out.println("Player one has guessed " + guessp1);
        guessp2 = p2.number;
        System.out.println("Player two has guessed " + guessp2);
        guessp3 = p3.number;
        System.out.println("Player three has guessed " + guessp3);

        if (guessp1 == targetNumber) {
            p1isRight = true;

        }if (guessp2 == targetNumber){
            p2isRight=true;

        }if (guessp3 == targetNumber){
            p3isRight=true;
        }
        if (p1isRight||p2isRight||p3isRight){
            System.out.println("We have a winner!");
            System.out.println("Player one got it right? " + p1isRight);
            System.out.println("Player two got it right?" + p2isRight);
            System.out.println("Player three got it right? " + p3isRight);
            System.out.println("The game is over.");
            break;
        }else{
            System.out.println("None of you got it right! Try again!");
        }
    }
}

}

从上面的代码:

    int guessp1 = 10;
    int guessp2 = 0;
    int guessp3 = 0;

是我不明白的那个。 最初,所有这些都被分配了值0.我试图分配10来看看会发生什么,但没有改变。 这场比赛也是如此。

我的问题是,如果有的话,分配给声明的整数的值有什么意义? 特别是在这种情况下。

排除正常用途,比如说打印或用数学操作。

在您的例程中稍后,您将在以下代码行中覆盖指定的值:

 guessp1 = p1.number;
 System.out.println("Player one has guessed " + guessp1);
 guessp2 = p2.number;
 System.out.println("Player two has guessed " + guessp2);
 guessp3 = p3.number;
 System.out.println("Player three has guessed " + guessp3);

因此,基本上分配的值根本不是使用,但通常一个好的做法意味着设置一个默认值到变量,所以在以后使用时,您可以确定是否已分配值或变量是否仍具有其默认值。

定义默认值有助于避免意外情况。在某些编程语言中,创建的未分配或设置为null的对象可能根据它们引用的内存地址包含任何垃圾数据。

有些人使用-1这样的值,其中只有正数,并且通过询问默认值是否仍然存在来捕获没有赋值的情况。 在您的情况下,默认值为0。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM