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

Java变量未初始化

荆运诚
2023-03-14

我在这里看到过类似的问题,如果这看起来像是重复的,我很抱歉,但是类似问题的答案对我没有帮助。所以我有一个方法,它是类的一部分。这里是:

public int min_value()
   {
       int min;

       for (int i = 0;i < size - 1;i++)
       {
           min = numbers[i];
           for (int k = 1;k < size; k++)
           {
               if (numbers[k] < min)
               {
                   min = numbers[k];
               }
               else
               {
                   min = numbers[i];
               }
           }
       }

       return min;
   }

错误表明变量min可能尚未初始化。我不明白这怎么可能是真的。我觉得变量不可能不在for循环之外初始化。请帮忙。谢谢

共有3个答案

勾海超
2023-03-14

如果大小为1或更小,则不会初始化min!

曾修真
2023-03-14

改变intmin int min=0

您将初始化min。

编辑:

错误来自这样一个事实,即如果size=1,您的for循环将永远不会执行,因此min永远不会有值。您不能返回未初始化的值,这就是为什么会出现错误。

夏雅志
2023-03-14

以下是编译器对min\u value()方法的看法:

public int min_value()
{
    int min;

    // for blocks

    return min;
}

为什么部分:想象一下如果大小等于1:for循环的代码块将永远不会执行。由于您正在为块(循环)操作中的min变量,因此编译器假定执行流可能不会进入这些循环,因此它假定此变量可能未初始化。如果将min设置为类的成员变量(因为编译器将成员变量设置为其默认类型值),则这不会是一个问题,但这里的情况并非如此。(方法主体)

 类似资料:
  • 问题内容: 我的Java程序中出现以下错误: Java变量未初始化错误…错误:变量nam和r未初始化位置类子级 但是并且已经初始化,但是我仍然遇到相同的错误。 问题答案: 不要获取 默认值 ,应在使用它们之前对其进行初始化,并使用main中的默认值进行初始化,这样就可以了。 顺便说一句,考虑为您的类和变量命名是有意义的。

  • 我正在研究Euler Problem 9项目,其中说明: 毕达哥拉斯三元组是由三个自然数组成的集合 例如,3^2 4^2=9 16=25=52。 确实存在一个毕达哥拉斯三重态,其bc=1000。查找产品abc。 以下是我到目前为止所做的: 当我运行代码时,会出现以下错误: 注意:我的每个变量(a、b和c)都有不同的行号。 我想当我声明a、b和c为整数时,如果不赋值,默认值是0。 即使不是这样,在我

  • 我正在经历对我来说毫无意义的奇怪行为。以下程序(我试图将其简化为最小的示例)因而崩溃,因为为: 我希望它打印: 但是如果(可以通过取消对main方法的第一行的注释或对以下两行重新排序来完成),程序将正确终止。 我怀疑这个问题与Java类初始化顺序有关,但我在相关JLS部分中找不到任何解释。 所以,我的问题是:这到底是怎么回事?这是某种虫子还是我错过了什么? 我的JDK版本是1.8.0_111

  • 我有以下Java代码: 但是,当我运行它时,它会抛出以下错误: 我在do之前初始化了变量。while 循环,并在 try. 中设置值。捕获循环。似乎尚未设置该变量。抱歉,如果这是一个相当基本的问题,但我似乎无法弄清楚。

  • 问题内容: 以下代码段使我在第1行出现了编译器错误。 据我了解,float用于十进制变量。 我是否遗漏了明显的东西,还是应该始终对小数变量初始化使用强制转换? 编辑:我知道’f’可以在末尾用于浮点变量,但这是强制性的吗? 问题答案: 除非您指定浮点文字只是s,否则它们将被视为s。(类似地,除非另有说明,否则整数文字是s。)将字母追加到数字上使其成为a : JLS具有用于文字值的全面输入规则。不,你