Fitlering的话

时间:2015-12-04 12:25:58

标签: java

String的元素是城镇的名称,以大写字母开头。填写字符串的元素(不超过50)。获取包含字母“e”2,3或4次的所有城镇的结果,并且不包含字母“p”。

我无法弄清楚如何编写一个代码,找到至少有两个“e”而不是“p”的单词。

public class Проект4ж {
    static String[] towns = { "Еелена", "Асееновград", "Долно Калугерово", "Китеен", "Калофеер"};

    public static void main(String[] args) {

        for (int i=0; i<towns.length; i++){
            if(towns[i].contains(!="p"){ 


                System.out.println(towns[i]);
            }
        }
    }
}

对不起,这些城镇都是保加利亚人,只是老师要求我们这样做..无论如何,你得到了重点。我以为我需要用“charAt”做循环的另一部分,但我不确定如何。

2 个答案:

答案 0 :(得分:0)

你可以得到这样一个字母的出现次数

 int count = StringUtils.countMatches( yourString, "e");

所以检查它是2,3还是4 你必须为你的字符串数组中的所有字符串执行此操作 所以你需要一个Foreach

  foreach (String s in towns)
                {
                     int count = StringUtils.countMatches( s, "e");
                      int countP = StringUtils.countMatches( s, "p");

                       if( (count == 2 || count == 3 || count == 4 ) && countP != 0  )
                         System.out.println(s);
                }

答案 1 :(得分:0)

您在之前的评论中对int e = 0提出了正确的想法。

for (int i=0; i<towns.length; i++){
    if(!towns[i].contains("p")){
        int e=0;
        for (int j=0; j<towns[i].length; j++){
            if(towns[i].charAt(j) == 'e' || towns[i].charAt(j) == 'E'){
                e++;
            }
        }
       if(e>1 && e<5){//This is assuming you don't want to print cities with more than 4 E's
           System.out.println(towns[i]);
        }
    }
}