int未初始化编译错误

时间:2013-05-15 15:27:22

标签: java int

好的,所以我搜索了类似这样的线程,但找不到我正在寻找的答案。

我正在尝试编写生成随机数的内容并将其转换为问题。 我甚至不确定它是否写得正确但我有编译错误。

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


    }
}

3 个答案:

答案 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;

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