所以我正在尝试编写一个方法,它将向我返回另一个字符串中String的出现次数。在这种情况下,它查找字符串中的空格数。它好像indexOf()
没有识别空格。
这是我的方法:
public int getNumberCardsDealt()
{
int count = 0;
int len2 = dealtCards.length();
int foundIndex = " ".indexOf(dealtCards);
if (foundIndex != -1)
{
count++;
foundIndex = " ".indexOf(dealtCards, foundIndex + len2);
}
return count;
}
这是我的申请:
public class TestDeck
{
public static void main(String [] args)
{
Deck deck1 = new Deck();
int cards = 52;
for(int i = 0; i <= cards; i++)
{
Card card1 = deck1.deal();
Card card2 = deck1.deal();
}
System.out.println(deck1.cardsDealtList());
System.out.println(deck1.getNumberCardsDealt());
}
}
请注意,我已经有Card
类,deal
方法有效。
答案 0 :(得分:2)
查看indexOf方法的文档。你错了。
您应该更改调用
" ".indexOf(dealtCards);
要
dealtCards.indexOf(" ");
也就是说,在相关字符串上调用该方法并向其传递您要查找的字符,而不是相反。
此外,无论如何,您的方法无法正确计算,您应该将其更改为:
public int getNumberCardsDealt() {
int count = 0;
int foundIndex = -1; // prevent missing the first space if the string starts by a space, as fixed below (in comments) by Andy Turner
while ((foundIndex = dealtCards.indexOf(" ", foundIndex + 1)) != -1) {
count++;
}
return count;
}
答案 1 :(得分:1)
@ A.DiMatteo的答案为您提供了indexOf
目前无法正常工作的原因。
在内部,String.indexOf
基本上只是迭代字符。如果您总是只是寻找一个角色,那么您可以自己轻松地进行此迭代以进行计数:
int count = 0;
for (int i = 0; i < dealtCards.length(); ++i) {
if (dealtCards.charAt(i) == ' ') {
++count;
}
}