如何创建一个方法,可以计算字符串中的空格量直到第一个空格?

时间:2016-03-23 22:09:08

标签: java

@Test
public void testFirstBlankPosition()
{
    assertEquals(4, sc1.firstBlankPosition());
    assertEquals(5, sc2.firstBlankPosition());
}

这是我必须尝试并运行测试,但它没有通过测试,但它也没有通过它,这出现了什么问题?它应该计算直到字符串中第一个空格的字符数量并返回它的空格量。

public Object firstBlankPosition()
{   

    int i = 0;
    int count = 0;
    while ( i < sentence.length())
        if( sentence.charAt(i) != ' ')
        {
           count = count + 1;
        }
        else
        {
           i = i + 1;
        }


    return count;
}

3 个答案:

答案 0 :(得分:2)

您应该使用for - 循环代替。 i应始终递增。

for (int i = 0; i < sentence.length(); i++){
    if( sentence.charAt(i) != ' ')
    {
       count = count + 1;
    }
}

此外,您可能希望将返回类型更改为int而不是Object

答案 1 :(得分:1)

算法可以进一步改进,但是要问问题:你得到if..else ..错了。
你应该在if块中计算,并在else块中打破while循环:

if (sentence.charAt(i) != ' ')
{
    count++;
    i++;
}
else
{
    break;
}

编辑:正如其他人所提到的,使用indexOf的方法更短(它返回一个字符的从0开始的位置)。您还可以使用此代码而不是while块获取解决方案:

if (sentence.contains(" "))
{
    count = sentence.indexOf(' ');
}

答案 2 :(得分:1)

我想你想在第一个空格之前获得字符数。

如果您想让代码正常工作,那么您可以使用以下代码:

public int firstBlankPosition(){   
    int i = 0;
    while ( i < sentence.length()){
        if(sentence.charAt(i) == ' '){
            return i;
        }
        i++;
    }
    return i;
}
如果sentence.indexOf(' ')中有空格,则

sentence会有效。但是,如果输入字符串中没有空格,它将返回-1。