我正在尝试在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);
}
答案 0 :(得分:2)
在使用块之前,应先初始化块中的变量,并使用初始值初始化它们,该初始值可以是任何允许的值。但是您必须先初始化它们才能使用它们。
int numofe=0;
这不会编译numofe++;
,因为numofe
未在您的代码中初始化
答案 1 :(得分:0)
如果在块内定义变量(if
,while
,for
等),则仅在该块内是已知的。如果您也想在其外部使用它,则需要在对应的块之前进行定义。
在这种情况下,您无法在if
内部进行定义,因为return(numofe>0 && numofe<4
并不为您所知。您需要在if
和for
之前定义它。
您还需要先对其进行初始化,因为它可能不会被返回,因此:int numofe = 0;