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