使用Java中的indexOf查找字符串中的空格

时间:2016-02-25 22:10:51

标签: java string indexof

所以我正在尝试编写一个方法,它将向我返回另一个字符串中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方法有效。

2 个答案:

答案 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;
  }
}