如果我有以下的2d对象 char
类型:
aaaa...||
bbb..|ccc
ddddd..|d
方法 countChars()
返回不同的字母数,即在上面的示例中,返回的结果是 4
因为有 a,b,c,
以及 d
角色。它不计算每个字符( '.'
以及 '|'
计数时不包括),但计算数组中不同字符的数目。另一个例子:
zzz.zz||
....tt|.
wwwwwwww
方法返回的上述结果为 3
( z
, t
以及 w
)在我的代码中,我没有得到想要的结果。
public int countChars()
{
char originalChar = 0;
char anotherChar = 0;
int count = 0;
for(int r = 0; r < height; r++)
{
for(int c = 0; c < width; c++)
{
if(space[r][c] != '.' || space[r][c] != '|')
{
space[r][c] = originalChar;
}
count++;
space[r][c] = originalChar;
}
}
return count;
}
3条答案
按热度按时间kxe2p93d1#
创建一个字符数组来保存唯一的字符。每次找到不是“.”或“|”的字符时,将其与数组中的每个字符进行比较,如果不匹配,则将其添加到数组中并增加计数。下面是一些psudo代码。
ffscu2ro2#
我会用一个
Set
来处理这个问题,因为它消除了重复计数的问题。此解决方案假定
.
以及|
是唯一要排除的两个字符。如果你想只数字母(或字母和数字),那么请更新你的问题陈述。trnvg8h33#
问题是,您试图循环循环中的每个字符,甚至不检查它们是否已计数:
您需要做的是创建一个数组来保存已计数的字符:
下面的示例不使用任何集合框架。