Java 变量未初始化

Java variable is not initialized

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

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 循环中初始化。请帮忙。谢谢!

int min;更改为int min = 0;

您将初始化 min。

编辑:

错误是因为如果 size = 1,您的 for 循环将永远不会执行,因此 min 永远不会有值。你不能 return 一个未初始化的值,这就是你得到错误的原因。

如果size小于或等于1,min将不会被初始化!

好吧,如果 i 不小于 size - 1 你将 return 保持原样。
在这种情况下,Min 尚未初始化,您将 return 它是错误的来源。

只需输入: int min = 0一开始就没事。
此外,您还可以:

min = numbers[0]

min_value() 方法在编译器看来是这样的:

public int min_value()
{
    int min;

    // for blocks

    return min;
}

WHY 部分:想象一下如果 size 等于 1:for 循环的代码块将永远不会执行。由于您在 for (循环)中操作 min 变量,因此编译器假定执行流程 可能不会进入 这些循环,因此它假定这个变量可能不会被初始化。如果您将 min 设置为 class 的成员变量,这不会成为问题(因为成员变量设置为它们的 default type values by the compiler),但这里不是这种情况。 (一个方法体)