外循环遍历每一行,嵌套循环遍历每个字符

时间:2014-05-12 02:11:46

标签: java arrays loops nested-loops outer-join

我必须编写一个名为“count”的静态方法,将char作为参数,返回此字符在Layout.ROWS(类Layout中的字符串数组)中出现的次数。为此,我需要一个外部循环来遍历每一行,并使用嵌套循环来遍历每个字符。这就是我试过的:

public static int count(char d)
{
    int sum = 0; 
    int i = 0;

     while ( i < Layout.ROWS.length && !Layout.ROWS[i].equals(d) ) 
     {  
         i++;

         if (Layout.ROWS[i].equals(d))
         {
            sum++;
         }
     }   

     return sum;
}

但它不起作用。我的输出是:线程“main”中的异常java.lang.ArrayIndexOutOfBoundsException

知道我应该怎么做吗? 这是Layout.ROWS:

public static final String[] ROWS = {
    "     p      ex",
    " .            ",
    "  .           ",
    "   .          ",
    "    .         "
};

1 个答案:

答案 0 :(得分:2)

您尝试将字符串(Layout.ROWS[i])与char进行比较。您应该迭代数组中的String,并对构成它的String上的每个char进行迭代。虽然这可以通过while循环实现,但使用for循环会更清晰:

public static int count(char d) {
    int sum = 0; 

    // Iterate over all the strings in Layout.ROWS:
    for (String str : Layout.ROWS) {
        // Iterate over the chars of the string:
        for (int i = 0; i < str.length(); ++i) {
            if (d == str.charAt(i)) {
                ++sum;
            }
        }
    }
    return sum;
}