好的,所以我搜索了类似这样的线程,但找不到我正在寻找的答案。
我正在尝试编写生成随机数的内容并将其转换为问题。 我甚至不确定它是否写得正确但我有编译错误。
“变量answer1可能尚未初始化”
以下是代码:
import java.util.Scanner;
import java.util.Random;
public class random{
public static void main (String [] args){
System.out.println("Random number generated");
Random obj= new Random();
Scanner scan = new Scanner(System.in);
int answer1;
int rgen= obj.nextInt(100);
int rgen1= obj.nextInt(1000);
System.out.println(rgen + " + " + rgen1 + " = ? ");
scan.nextInt();
if (answer1 == rgen + rgen1)
System.out.println("Correct");
else
System.out.println("Wrong");
}
}
答案 0 :(得分:2)
将answer1
定义为初始值。
int answer1 = 0;
您无法使用尚未初始化的变量,这是您尝试对if (answer1 == rgen + rgen1)
执行的操作。
你可能想读下一个整数,所以你也可以这样做:
int answer1 = scan.nextInt();
或者,在点击if
块之前,您可以更改scan
的语句,将值放入变量中:
answer1 = scan.nextInt();
答案 1 :(得分:2)
你可能想要这个:
answer1 = scan.nextInt();
否则,scan.nextInt()
的调用将读取并丢弃该值,而answer1
仍然未初始化。您应该将初始化与声明结合起来:删除
int answer1;
并将其替换为
int answer1 = scan.nextInt();
在您从Scanner
读取int的行上。
答案 2 :(得分:1)
代码
int answer1;
为该变量保留堆栈空间。它没有放任何东西,所以该变量中的任何内容都是当时该位置的内存。
它还没有初始化,因为你还没有放任何东西。如果将其更改为
,警告将消失int answer1 = 0;
但老实说,我不确定你的代码是做什么的。