Java int未初始化编译错误

Java int未初始化编译错误,java,int,Java,Int,好的,我搜索了一条类似的线索,但没有找到我正在寻找的答案 我正试图编写一些程序,生成随机数,并将它们变成一个问题。 我甚至不确定它写得是否正确,但我有一个编译错误 “变量answer1可能尚未初始化” 代码如下: import java.util.Scanner; import java.util.Random; public class random{ public static void main (String [] args){ System.out.prin

好的,我搜索了一条类似的线索,但没有找到我正在寻找的答案

我正试图编写一些程序,生成随机数,并将它们变成一个问题。 我甚至不确定它写得是否正确,但我有一个编译错误

“变量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");


    }
}

answer1
定义为某个初始值

int answer1 = 0;
您不能使用未初始化的变量,如果(answer1==rgen+rgen1),您将尝试使用
if(answer1==rgen+rgen1)

您可能希望读入下一个整数,因此您也可以这样做:

int answer1 = scan.nextInt();
或者,在点击
if
块之前,您可以更改
scan
语句,将值放入变量中:

answer1 = scan.nextInt();

你可能想要这个:

answer1 = scan.nextInt();
否则,调用
scan.nextInt()
读取并丢弃该值,而
answer1
保持未初始化状态。您可能也应该将初始化与声明结合起来:remove

int answer1;
并将其替换为

int answer1 = scan.nextInt();
在从
扫描仪读取int的行上

int answer1;
在堆栈上为该变量保留空间。它没有把任何东西放进去,所以那个变量中的东西就是那个位置的内存中的东西

它尚未初始化,因为您尚未在其中放入任何内容。如果你把它改为,警告就会消失

int answer1 = 0;

但老实说,我不确定你的代码想做什么。

我该怎么做?为什么人们投票反对我的观点--编辑——哦,谢谢@EdwardHiroko“int answer1=0;“nvm!它起作用了!谢谢你,有什么办法可以让我的随机发生器永远使用?如果用户插入了错误的答案,它将打印相同的问题,如果用户插入了正确的问题,那么系统将生成另一个随机数学问题?可能吗。。。它从未初始化过。是什么让您对错误消息感到困惑?您声明它,不初始化它,然后尝试在
if
语句中使用它。这是一个艰难的游戏,可能需要一段时间才能赢得它;-)谢谢它是有效的,我的代码试图生成随机数,然后将它们打印在一个数学问题中,如“50+400”,现在如果答案是450,它将打印“正确”,如果不是,它将打印“错误”。