在String数组中查找匹配的字符串

时间:2015-12-12 14:31:40

标签: java arrays string

我无法从字符串数组中提取包含超过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]);
            }
        }
    }

}

2 个答案:

答案 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;
....