Java变量未初始化

时间:2015-11-26 21:23:28

标签: java class if-statement methods initialization

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

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

4 个答案:

答案 0 :(得分:2)

以下是min_value()方法对编译器的看法:

public int min_value()
{
    int min;

    // for blocks

    return min;
}

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

答案 1 :(得分:1)

int min;更改为int min = 0;

你将有最初的初始化。

编辑:

错误来自这样一个事实:如果size = 1,你的for循环将永远不会被执行,因此min将永远不会有值。您无法返回未初始化的值,这就是您收到错误的原因。

答案 2 :(得分:1)

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

答案 3 :(得分:1)

好吧,如果我不小于size - 1,你将按原样返回min。
在这种情况下,Min尚未初始化,您将返回它,即错误来自的位置。

刚刚放: int min = 0一开始就没问题。
此外,您可以这样做:

min = numbers[0]