我在从字符串数组中提取包含三个以上“ O”或“ o”的名称时遇到了麻烦。我必须在以后打印它们。我在哪里出错了,该如何解决?
static String[] towns = {"England", "France",
"Romania", "Germany", "Canada", "Russia",
"Eoeoeooero"};
public static void main(String[] args) {
for (int i = 0; i < towns[i].length(); i++) {
for (int j = 0; j < towns[i].length(); j++) {
if (towns[i].charAt(j) == 'o' || towns[i].charAt(j) == 'O') {
e++;
}
}
if (e > 3) {
System.out.println(towns[i]);
}
}
}
}
最佳答案
由于您缺少变量e
的声明,因此我假设它在类的范围内声明。这是一个坏主意,因为它在同一实例上运行的所有方法之间共享,如果为static
,则在所有方法之间共享。
将变量e
设置为方法的局部变量,并将其移至for
循环的作用域以解决问题:
for (int i = 0; i < towns.length(); i++) {
int e = 0; // <<== Here
for (int j = 0; j < towns[i].length(); j++) {
if (towns[i].charAt(j) == 'o' || towns[i].charAt(j) == 'O') {
e++;
}
}
if (e > 3) {
System.out.println(towns[i]);
}
}