我必须编写一个名为“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",
" . ",
" . ",
" . ",
" . "
};
答案 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;
}