[英]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.