Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何创建一个方法来计算字符串中的空格数,直至第一个空格?_Java - Fatal编程技术网

Java 如何创建一个方法来计算字符串中的空格数,直至第一个空格?

Java 如何创建一个方法来计算字符串中的空格数,直至第一个空格?,java,Java,这就是我必须尝试并运行测试的内容,但它没有通过测试,但也没有通过测试,这有什么问题吗?它应该计算字符的数量,直到字符串中的第一个空格,并返回它原来的空格数量 @Test public void testFirstBlankPosition() { assertEquals(4, sc1.firstBlankPosition()); assertEquals(5, sc2.firstBlankPosition()); } public对象firstBlankPosition()

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

@Test
public void testFirstBlankPosition()
{
    assertEquals(4, sc1.firstBlankPosition());
    assertEquals(5, sc2.firstBlankPosition());
}
public对象firstBlankPosition()
{   
int i=0;
整数计数=0;
while(我<句子长度())
如果(句子.字符(i)!=“”)
{
计数=计数+1;
}
其他的
{
i=i+1;
}
返回计数;
}

您应该为-循环使用
<代码>i
应始终递增

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;
}
for(int i=0;i<句子长度();i++){
如果(句子.字符(i)!=“”)
{
计数=计数+1;
}
}

此外,您可能希望将返回类型更改为
int
而不是
对象
,该算法可以进一步改进,但要解决问题:您得到了if..else。。错。
您应该在if中计数,并在else块中中断while循环:

for (int i = 0; i < sentence.length(); i++){
    if( sentence.charAt(i) != ' ')
    {
       count = count + 1;
    }
}
if (sentence.charAt(i) != ' ')
{
    count++;
    i++;
}
else
{
    break;
}
编辑:正如其他人所提到的,使用
索引
有一种较短的方法(它返回字符从0开始的位置)。您还可以使用以下代码而不是while块获得解决方案:

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

我想你想得到第一个空格前的字符数

如果要使代码正常工作,则可以使用以下代码:

if (sentence.contains(" "))
{
    count = sentence.indexOf(' ');
}
public int firstBlankPosition(){
int i=0;
while(我<句子长度()){
如果(句子字符(i)=''){
返回i;
}
i++;
}
返回i;
}

句子。如果
句子中有空格,则索引(“”)
将起作用。但是,如果输入字符串中没有空格,它将返回-1。

只执行
string.indexOf(“”)是否更有意义
获取空间的第一个位置。根据定义,第一个空间之前的空间数为0。如果有非空间,则有一个无限循环<一旦遇到非空格,代码>i
将不会增加,因此,
while
循环将永远不会终止。你说
我怎样才能建立一个方法来计算空格的数量
然后你说
来计算字符的数量直到第一个空格
所以你想计算第一个空格之前的空格数量或第一个空格之前的字符数量?取
语句
作为
firstBlankPosition()
中的参数,否则将无法编译;OP的代码也有同样的问题。这个答案写得很好+1来自我。@DebosmitRay谢谢你的评论。从给定的测试用例来看,
句子
显然是一个类字段。所以不需要参数:-)Yea Yea。我注意到了。我不明白为什么会这样。如果有必要的话,还有人编写自己的函数的原因,因为它只对一个字符串有效,这对我来说很奇怪。好。不管怎样。我可能错了。你不认为在这种情况下,-循环的
会更好吗?