我想知道设置像这样的代码之间的真正区别
public boolean stringE(String str) {
int count = 0;
for (int i =0; i < str.length(); i++) {
if (str.charAt(i) == 'e') {
count += 1;
}
}
return (count >=1 && count<=3 );
}
和这个
public boolean stringE(String str) {
for (int i =0; i < str.length(); i++) {
int count = 0;
if (str.charAt(i) == 'e') {
count += 1;
}
}
return (count >=1 && count<=3 );
}
我知道第一个是正确的但是通过在“for loop”中设置“int count = 0”会有什么不同。难道它还不会将1加到count = 0吗?
答案 0 :(得分:5)
第二种情况不会编译,因为count
语句中将无法识别return
,因为count
变量的范围仅在for
内在这种情况下循环。
这就是为什么你必须在count
循环之外声明for
。
第二种情况的另一个问题,如Dici所提到的,是你在循环的每次迭代中将count
重置为0
,这意味着循环不计算它应该是什么计数。
答案 1 :(得分:1)
在第二种情况下,变量count在for循环外部不可见,因此会在return语句中创建错误。逻辑也是错误的,因为每次都会重置。
答案 2 :(得分:0)
您可以随时尝试 - 在这种情况下,您可能会注意到第二个不会编译。这在语法上是不正确的。
在Java中,当您定义变量时,它只存在于其定义的大括号{}
的范围内。如果在循环内定义变量,它只存在于循环内。您不能在其定义的大括号之外使用count
。
另外,我怀疑第一个程序在语义上是否正确 - 在第一次迭代期间总是return
,这不太可能是你想要的。