Java:为什么编译器会在这里抱怨?

  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  }

为什么第5行说specialFuncStart可能没有被初始化?字符串是最终的并且是固定的,因此for循环将始终运行.编译器不知道或我错过了什么吗?我明白初始化specialFuncStart = -1;是如何解决它,但为什么?

最佳答案 你宣布它但你没有初始化它.你需要为它设置一个值:

int specialFuncStart; // declare
specialFuncStart = 0; // initialize

int specialFuncStart = 0; // both

您的编译器认为有时specialFuncStart不会被初始化,因为for循环不必执行.

点赞