我在这里看到了类似的问题,如果这看似重复,我很抱歉,但类似问题的答案对我没有帮助。 所以我有一个类的一部分方法。这是:
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循环中初始化。请帮忙。谢谢!
答案 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]