我正试图在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);
}
块中的变量应该在使用它们之前进行初始化,使用初始值对它们进行初始化,该值可以是任何允许的值。但是如果不首先初始化它们,就不能使用它们。
int numofe=0;
这不会编译numofe++;
,因为numofe
没有在代码中初始化
如果在块(if
、while
、for
等(内定义变量,则仅在该块内已知。如果你也想在it/them之外使用它,你需要在对应块之前进行定义。
在这种情况下,您不能在if
内部定义,因为它不知道您是return(numofe>0 && numofe<4
。您需要在if
和for
之前定义它。
您还需要首先初始化它,因为它可能会在没有被返回的情况下被返回,所以:int numofe = 0;