0 int specialFuncStart;
1 String[] specialFunctions= {"sum","ddx","integral"};
2 for(String element: specialFunctions){
3 specialFuncStart = finalMath.lastIndexOf("sum");
4 }
5 while (specialFuncStart != -1) { code }
为什么line 5
说specialFuncStart
可能尚未初始化?字符串是最终的并且是固定的,因此for循环将始终运行。编译器不知道或我错过了什么吗?我了解初始化specialFuncStart = -1;
是如何修复它,但为什么?
答案 0 :(得分:2)
你宣布但你没有初始化它。您需要为其设置一个值:
int specialFuncStart; // declare
specialFuncStart = 0; // initialize
int specialFuncStart = 0; // both
您的编译器认为有时specialFuncStart
不会被初始化,因为for
循环
答案 1 :(得分:0)
编译器显示错误,因为你在for循环中初始化了specialFuncStart变量而且compileris不确定它是否执行因为 in for-each循环数组大小可以是0,这使得它不能执行。
因此,您可以在下面循环之前启动它,以防止错误
specialFuncStart = 0;
答案 2 :(得分:0)
在while循环中,检查带有变量的条件,该变量在另一个循环的范围内初始化。编译器不会让你这样做,考虑到它可能无法正确初始化,循环可能无法运行或可能提前中断的情况,即使从我们的观点明确表示事件将完美发生。 问题在于范围,Java是一种强大的强类型语言,它的编译器会检查每种可能性以防止错误发生。