-3

好的,所以我搜索了一个类似的主题,但找不到我正在寻找的答案。

我正在尝试编写一些生成随机数并将它们变成问题的东西。我什至不确定它是否正确编写,但我遇到了编译错误。

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


    }
}
4

3 回答 3

2

定义answer1为某个初始值。

int answer1 = 0;

您不能使用尚未初始化的变量,这是您尝试使用if (answer1 == rgen + rgen1).

您可能想读取下一个整数,因此您也可以这样做:

int answer1 = scan.nextInt();

或者,在你打你的if块之前,你可以改变语句scan将值放入变量中:

answer1 = scan.nextInt();
于 2013-05-15T15:28:15.357 回答
2

你可能想要这个:

answer1 = scan.nextInt();

否则,调用scan.nextInt()读取并丢弃该值,同时answer1保持未初始化状态。您也应该将初始化与声明结合起来:删除

int answer1;

并将其替换为

int answer1 = scan.nextInt();

在您从Scanner.

于 2013-05-15T15:28:49.767 回答
1

编码

int answer1;

在堆栈上为该变量保留空间。它没有在其中放置任何内容,因此该变量中的任何内容都是当时该位置内存中的内容。

它还没有被初始化,因为你还没有把任何东西放在那里。如果您将其更改为,警告将消失

int answer1 = 0;

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

于 2013-05-15T15:29:43.267 回答