我应该在哪里初始化变量以在IF块中工作?

时间:2018-11-04 21:31:15

标签: java variables if-statement initialization

我正在尝试在CodingBat上解决此问题:

  

如果给定的字符串包含1到3个'e'字符,则返回true。

到目前为止,我已经有了这个解决方案,但是如果我在IF块中初始化了“ numofe”整数,它将无法编译,因为代码的其他部分将无法使用它,反之亦然。那么我应该在哪里初始化变量,以便在代码中的任何地方都可以访问?

谢谢。

public boolean stringE(String str) {

  int numofe;

  for(int x = 0; str.length() > x; x++){

    if (str.charAt(x)=='e'){

      numofe++;
    }

  }
   return (numofe>0 && numofe<4);
}

2 个答案:

答案 0 :(得分:2)

在使用块之前,应先初始化块中的变量,并使用初始值初始化它们,该初始值可以是任何允许的值。但是您必须先初始化它们才能使用它们。

int numofe=0;

这不会编译numofe++;,因为numofe未在您的代码中初始化

答案 1 :(得分:0)

如果在块内定义变量(ifwhilefor等),则仅在该块内是已知的。如果您也想在其外部使用它,则需要在对应的块之前进行定义。

在这种情况下,您无法在if内部进行定义,因为return(numofe>0 && numofe<4并不为您所知。您需要在iffor之前定义它。

您还需要先对其进行初始化,因为它可能不会被返回,因此:int numofe = 0;