我无法从字符串数组中提取包含超过3“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]);
}
}
}
}
答案 0 :(得分:1)
由于您缺少变量static
的声明,我假设它是在类的范围内声明的。这是一个坏主意,因为它在同一个实例上运行的所有方法之间共享,如果是e
则在所有方法之间共享。
为您的方法创建变量for
local ,并将其移至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]);
}
}
循环的范围内以解决问题:
main()
答案 1 :(得分:0)
您有一个未初始化的变量“e”,这可能会导致编译时错误。
你的第一个循环for (int i = 0; i < towns[i].length(); i++)
也应该通过String[] towns
的元素,但你写的是使用数组成员的长度。
for (int i = 0; i < towns.length(); i++){
int e = 0;
....