我的程序要求用户输入一个数字,然后验证这个数字是否在两个随机生成的数字的范围内或范围外。变量num应该是用户的猜测,但它一直等于0。我不确定这是否与main中的num=0有关,因为如果=0不在那里,我就会得到一个 "变量可能未被初始化 "的错误。
代码:我的程序要求用户输入一个变量,而这个变量在main中=0,因为如果=0不在那里,我就会收到 "变量可能没有被初始化 "的错误。
public static int getValidGuess(Scanner get)
{
int num;
System.out.print("Guess a number: --> ");
num = get.nextInt();
return num;
} // getValidGuess end
public static boolean displayGuessResults(int start, int end, int num)
{
boolean result;
Random gen = new Random();
int n1 = gen.nextInt(99) + 1;
int n2 = gen.nextInt(99) + 1;
if (n1 < n2){
start = n1;
end = n2;
} //if end
else
{
start = n2;
end = n1;
} //else end
System.out.println("\nThe 2 random numbers are " + start + " and " + end);
System.out.println("User Guess is " + num);
if(num >= start && num <= end){
result = true;
System.out.println("Good Guess!");
}
else if(num < start || num > end){
result = false;
System.out.println("Outside Range.");
}
else{
result = false;
}
return result;
} // displayGuessResults end
public static void main(String[] args) {
// start code here
int start = 0, end = 0, num = 0;
Scanner scan = new Scanner(System.in);
String doAgain = "Yes";
while (doAgain.equalsIgnoreCase("YES")) {
// call method
getValidGuess(scan);
displayGuessResults(start, end, num);
System.out.print("\nEnter YES to repeat --> ");
doAgain = scan.next();
} //end while loop
} //main end
不同函数中的变量并不会因为名字相同就神奇地相同。如果你想在不传递变量作为参数或返回值的情况下能够共享变量,那么你需要在类中声明它们,而不是。
具体来说,你有两个选择。选择1(推荐):改变 getValidGuess(scan);
到 num = getValidGuess(scan);
. 选择2:把 public static int num = 0;
在你的类中,在你的所有函数之外,并删除了 num
从你所有的功能。