我很难从书中的一个练习中理解某些东西(完全初学者)。
示例代码是制作一个有三名玩家的猜谜游戏,它为所有三名玩家生成一个随机整数,该整数必须与游戏随机生成的整数相同。
该代码包含三个类,但这是我有疑问的最重要的一个。另外两个只是 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。
关于Java:变量持有者及其值(value)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16030311/