当前位置: 首页 > 知识库问答 >
问题:

Java变量可能尚未初始化

贾实
2023-03-14

我正在研究Euler Problem 9项目,其中说明:

毕达哥拉斯三元组是由三个自然数组成的集合

a^2 + b^2 = c^2

例如,3^2 4^2=9 16=25=52。

确实存在一个毕达哥拉斯三重态,其bc=1000。查找产品abc。

以下是我到目前为止所做的:

class Project_euler9 {

    public static boolean determineIfPythagoreanTriple(int a, int b, int c) {
        return (a * a + b * b == c * c);
    }   

    public static void main(String[] args) {
        boolean answerFound = false;
        int a, b, c;
        while (!answerFound) {
            for (a = 1; a <= 1000; a++) {
                for (b = a + 1; b <= 1000; b++) {
                    c = 1000 - a - b;
                    answerFound = determineIfPythagoreanTriple(a, b, c);
                }
            }
        }
        System.out.println("(" + a + ", " + b + ", " + c + ")");
    }
}

当我运行代码时,会出现以下错误:

Project_euler9.java:32: error: variable a might not have been initialized
        System.out.println("The Pythagorean triplet we're looking for is (" + a + ", " + b + ", " + c + ")");

注意:我的每个变量(a、b和c)都有不同的行号。

我想当我声明a、b和c为整数时,如果不赋值,默认值是0。

即使不是这样,在我看来他们都被分配了,所以我对错误有点困惑。

为什么会这样?

共有3个答案

墨财
2023-03-14

在声明局部变量后的方法开始时执行此操作:

a = b = c = 0;

这个错误基本上是说Java不能确保变量到达系统时有一个赋值。出来println()。记住:在Java中,只有属性有默认值,所有局部变量都必须在某个点显式初始化。

柳鸿信
2023-03-14

你的问题是这一行:

System.out.println("(" + a + ", " + b + ", " + c + ")");

while(!answerFound){…} 循环。编译器认为可能存在一个或多个变量abc未初始化的情况。

用这句话:

int a=0, b=0, c=0;

在声明变量时,使它们在声明时初始化,错误应该消失。

王彭薄
2023-03-14

默认情况下,实例变量(在您的情况下,它们将是整数)被分配给0。本地变量不是。(来自Java文档)

如果没有输入循环,那么变量就不会被初始化,这就是错误的原因。

您可以在声明时初始化它们:

int a=0, b=0, c=0;
 类似资料:
  • 问题内容: 我有一个方法创建一个,另一个方法更改字符串 我的编译器说它“可能尚未初始化”。 有人可以解释吗? 问题答案: 变量可能尚未初始化 在内部定义方法时,必须在其中初始化程序的每个变量中必须先使用一个值的地方。 同样重要的是,您的代码将永远无法正常运行,因为Java中的字符串是不可变的,因此您无法编辑字符串,因此应更改方法。 我将您的代码更改为类似的内容,但是我认为您的编辑方法应该做另一件事

  • 所以我已经在结果中声明了相关字符串的值,但是它仍然说我的变量“result”可能还没有初始化。 我正在尝试实现与此类似的输出。任何人都可以帮我吗?谢谢!

  • 问题内容: 当我尝试编译时: 我得到这些错误: 在我看来,我在方法的顶部初始化了它们。怎么了 问题答案: 你声明了它们,但没有初始化它们。初始化它们是将它们设置为等于一个值: 因为未初始化变量,但在循环中增加了变量(例如),因此会收到错误消息。 Java原语具有默认值,但如下一位用户所述 当声明为类成员时,它们的默认值为零。局部变量没有默认值

  • 问题内容: 我得到错误: TestCounter.java:115:变量计数器可能尚未初始化counters [i] = new Counter(i); 而且我不知道如何解决它。我知道我的课程“” 有效。下面是我的代码,如果您可以看一下,我将非常高兴。此代码包装在类的main方法中。 问题答案: 您尚未创建数组,只是声明了变量。 您需要这样做: 或类似的东西

  • 在最后一行显示为时出错 :::: 变量结果可能尚未初始化 这是我的代码:

  • 我试图使用Android Studio中的Google Firebase(机器学习工具包)的例子。将图像变量传递到检测器时出错。processImage方法(错误如下所示)。 我怎样才能克服这个错误?我必须使用FirebaseVisionImage。try-catch块中的fromFilePath,但错误消息告诉我image变量可能未初始化。 错误:变量映像可能尚未初始化