搜索字符串数组

时间:2014-04-16 14:58:23

标签: java arrays

例如,如果我有一个字符串

String [] grades = {"AAAB","ABAA","AABA"};

我想搜索字符串数组,看看是否有学生达到3个或更多A.

我知道您可以搜索字符串数组是否包含特定的单词,如:

Arrays.asList(grades).contains("AAA");

但如果我们有像AABA这样的东西有什么方法可以解决这个问题吗?此外,我想让它适用于所有等级而不仅仅是A ..(A,B,C,D等)。

4 个答案:

答案 0 :(得分:0)

您可以遍历字符串并计算给定成绩的出现次数:

    public static void main(String[] args)
    {
        String [] grades = {"AAAB","ABAA","AABA"};  
        System.out.println(countOccurences(grades[0], 'A'));
    }

    public static int countOccurences(String grades, char gradeToMatch )
    {
        int count = 0;
        for(char grade : grades.toCharArray())
        {
            if(grade == gradeToMatch)
              ++count;
        }
        return count;
    }

输出 3

答案 1 :(得分:0)

我认为这会有所帮助:

public static void main(final String[] args) {
    final String [] grades = {"AAAB","ABAA","AABA"};

    for (final String string : grades) {
        final char[] charArray = string.toCharArray();

        int count = 0;
        for (final char c : charArray) {
            if( c == 'A' ) {
                count++;
            }
        }

        if(count >= 3) {
            System.out.println("3+ A Grades");
        }
    }
}

这里最重要的是电话string.toCharArray()。这样就可以从字符串中获得一个字符数组,这样你就可以遍历并计算数组中A级的数量。

答案 2 :(得分:0)

您需要的是迭代给定的字符串并计算成绩出现的次数。

public int countGrades(String grades, char g) {
    int c = 0;
    for (int i = 0; i < grades.length; i++)
        if (grades.chatAt(i) == g)
            c++;

    return c;
}

此外,您应该考虑使用字符数组而不仅仅是字符串。

答案 3 :(得分:0)

public static boolean checkGrades(String grades, char someGrade, int times) {
    int counter=0;
    for (int k=0;k<grades.length();k++) {
        if (grades.charAt(k)==someGrade) counter++;
        if (counter>=times) return true;            
    }
    return false;
}

当然,只有当你的成绩由一个角色组成时,这才有效。您可以将该函数应用于整个数组:

    for (String g : grades) {
        System.out.println(checkGrades(g, 'A', 3));
    }