public static int countWords(String str)
此方法将计算str中的单词数 例如,如果
str = "Hi there"
,则该方法将返回2.
我是初学者,不应该使用预建程序。我知道它可能使用循环,我需要使用.indexOf
来查找空格?像我在底部尝试失败的事情
public static int countWords(String str){
int count=0;
int len=str.length();
if(str.indexOf(" ")>=0){
for(int i=0; i<len; i++)
count=count+i;
}
return count;
答案 0 :(得分:0)
你可以写
public static int countWords(String str){
if(str == null){
return 0; // or your wish to return something
}
str = str.trim();
return str.split("\\s+").length;
}
即使有空格,\\s+
也会分割字符串。
答案 1 :(得分:0)
目前的实施完全错误:
if
块,并且错误地返回0,因为这是count
的初始值并且从未更改len
之间的数字相加,例如len = 5
,结果将为0 + 1 + 2 + 3 + 4
这应该相对健壮:
int countWords(String text) {
String[] parts = text.trim().split("\\W+");
if (parts.length == 1 && parts[0].isEmpty()) {
return 0;
}
return parts.length;
}
繁琐的if
条件可以处理一些特殊情况:
单元测试:
@Test
public void simple() {
assertEquals(4, countWords("this is a test"));
}
@Test
public void empty() {
assertEquals(0, countWords(""));
}
@Test
public void only_non_words() {
assertEquals(0, countWords("@#$#%"));
}
@Test
public void with_extra_spaces() {
assertEquals(4, countWords(" this is a test "));
}
@Test
public void with_non_words() {
assertEquals(4, countWords(" this is a test :-) "));
}
答案 2 :(得分:0)
c:\php\www\myapp