Java 避免初始化变量以使代码仍然工作
我做了一个猜谜游戏,第一次问: -有多少玩家想玩这个游戏 -分配所有玩家 -开始按顺序猜数字 获胜者是通过使用随机数猜出正确数字的玩家 代码工作没有问题,但有一件事与我有关; 我需要首先初始化guessingNumber变量,这看起来有点奇怪,因为我需要键入任何我知道不会随机生成的数字,如果我只声明变量int guessingNumber,我会在这里得到一个错误Java 避免初始化变量以使代码仍然工作,java,variables,Java,Variables,我做了一个猜谜游戏,第一次问: -有多少玩家想玩这个游戏 -分配所有玩家 -开始按顺序猜数字 获胜者是通过使用随机数猜出正确数字的玩家 代码工作没有问题,但有一件事与我有关; 我需要首先初始化guessingNumber变量,这看起来有点奇怪,因为我需要键入任何我知道不会随机生成的数字,如果我只声明变量int guessingNumber,我会在这里得到一个错误 } while (los != guessingNumber); - guessingNumber is underlined wit
} while (los != guessingNumber); - guessingNumber is underlined with error :
局部变量guessingNumber可能尚未初始化
您知道如何避免初始化-1位并使代码仍然工作吗
public class kopia {
public static void main(String[] args) {
Random rand = new Random();
int los = rand.nextInt(11);
int numberofPlayers;
int guessingNumber= -1;
Scanner scan7 = new Scanner(System.in);
Scanner scan = new Scanner(System.in);
Scanner scan2 = new Scanner(System.in);
do {
System.out.println(" Type number of players :");
while (!scan7.hasNextInt()) {
System.out.println("Sorry, bad data");
scan7.next();
}
numberofPlayers = scan7.nextInt();
} while (numberofPlayers <= 0);
String gracze[] = new String[numberofPlayers];
int liczbaProbGraczy[] = new int[numberofPlayers];
for (int i = 1; i <= numberofPlayers; i++) { // ++1
System.out.println("Number of player " + i);
gracze[i - 1] = scan.nextLine();
}
do {
for (int j = 0; j < gracze.length; j++) {
System.out.println(" Now guesssing " + gracze[j]);
System.out.println("Guess number 0 do 10");
while (!scan2.hasNextInt()) {
System.out.println("Cannot recognize this number");
scan2.next();
}
guessingNumber = scan2.nextInt();
liczbaProbGraczy[j]++;
if (guessingNumber == los) {
System.out.println("Winner is " + gracze[j] + "\n");
for (int c = 0; c < gracze.length; c++) {
System.out.println("Number of try's " + gracze[c] + " equals " + liczbaProbGraczy[c]);
}
break;
}
}
} while (los != guessingNumber);
scan7.close();
scan.close();
scan2.close();
}
}
公共类科皮亚{
公共静态void main(字符串[]args){
Random rand=新的Random();
int los=兰特nextInt(11);
国际球员人数;
整数猜测数=-1;
扫描仪scan7=新扫描仪(System.in);
扫描仪扫描=新扫描仪(System.in);
扫描仪scan2=新扫描仪(System.in);
做{
System.out.println(“输入玩家数量:”);
而(!scan7.hasNextInt()){
System.out.println(“对不起,数据不正确”);
scan7.next();
}
numberofPlayers=scan7.nextInt();
}当(numberofPlayers您无法将某个变量与未初始化的整数变量进行比较,您需要先对其进行初始化。在您的情况下,如果比较为真,则在同一块中定义整数时,您试图使用该比较。请注意,没有理由打开3个不同的扫描仪你可以对任何东西使用相同的一个,有0个不同。谢谢你的输入,我将只使用一个扫描器进行测试gracze。理论上长度可以是0,for循环被跳过并且gussingnumber
没有被询问。所以必须在这里初始化为斜体。@Tomek Młynarski当你在函数(方法)中声明变量时它没有默认值,您必须对其进行初始化。如果您在类级别(例如,在本例中在函数外部)声明变量,则在创建实例时,它将获得默认值。对于int,如果您在函数外部定义它,它将获得0。@Tomek Młynarski Yes声明它为静态猜测数;在主函数外部在你的例子中,如果你在一个方法中声明整数,它就不能被取消初始化…同样,你说“整数不能为空,因为它是一个基元,”如果它是object,你说它会起作用吗?我特别回答了他的问题,是否可以使用未初始化的int
。也可以使用未初始化的整数。Nvm:)。如果他使用Integer guessingNumber,代码也不会编译。