使用 indexOf 统计单词
Count Words Using indexOf
我不会用数组,只能用简单的Java (if
, for
, while
, substring
, length
, indexOf
)
public int howManyWords(String s){
myString = "I have a dream";
int count = 1;
int length = 0;
while(count>=0){
count = myString.substring(String.valueOf(length),myString.indexOf(" "));
count++;
length = myString.indexOf(" ");
}
return count;
}
应该return4
已编辑:添加了缺失的 else 案例。
试试下面的代码:
使用 substring 和 indexOf 从字符串中删除计数的单词,并在每次迭代中增加计数。
public int countWords(String s){
String myString = "I have a dream";
int count = 0;
int length = myString.length();
while(length>0){
if((myString.indexOf(" ")!=-1) && (myString.indexOf(" ")+1)<length){
myString = myString.subString(myString.indexOf(" ")+1);
count++;
length = myString.length();
}
else {
length = 0;
break;
}
}
return count;
}
PS: 按照惯例,你的方法名称应该表示动作,因此我建议它是 countWords 而不是 howManyWords。
首先,你做了无限循环,因为count
是1
,你只是增加它。
其次,您甚至没有尝试在某些 IDE 中编写此代码,因为它会抛出语法错误,因为您正在将 string
分配给 int
,当你做 count = myString.substring()
因此,您可以使用 myString.indexOf
而不是在循环中使用 count
如果您不关心 myString
会发生什么,这样的方法可能会起作用
int count = 0;
while(myString.indexOf(" ") >= 0) {
count++;
myString = myString.substring(myString.indexOf(" ") + 1)
}
return count;
让我们假设您正在测试的字符串不包含前导或尾随空格,因为这会影响解决方案。您问题中的示例字符串不包含前导空格或尾随空格。
只需在循环中调用方法 indexOf(String, int)
,并且在每次迭代中将 int
参数设置为比上一次迭代中获得的参数多一个。一旦方法 indexOf()
返回的值为 -1(减一),您就完成了。但是不要忘记在退出循环后添加最后一个词。
String myString = "I have a dream";
int count = 0;
int index = 0;
while (index >= 0 && index < myString.length()) {
index = myString.indexOf(" ", index);
System.out.println("index = " + index);
if (index >= 0) {
index++;
count++;
}
}
if (index < 0) {
count++;
}
System.out.println("count = " + count);
我不会用数组,只能用简单的Java (if
, for
, while
, substring
, length
, indexOf
)
public int howManyWords(String s){
myString = "I have a dream";
int count = 1;
int length = 0;
while(count>=0){
count = myString.substring(String.valueOf(length),myString.indexOf(" "));
count++;
length = myString.indexOf(" ");
}
return count;
}
应该return4
已编辑:添加了缺失的 else 案例。
试试下面的代码:
使用 substring 和 indexOf 从字符串中删除计数的单词,并在每次迭代中增加计数。
public int countWords(String s){
String myString = "I have a dream";
int count = 0;
int length = myString.length();
while(length>0){
if((myString.indexOf(" ")!=-1) && (myString.indexOf(" ")+1)<length){
myString = myString.subString(myString.indexOf(" ")+1);
count++;
length = myString.length();
}
else {
length = 0;
break;
}
}
return count;
}
PS: 按照惯例,你的方法名称应该表示动作,因此我建议它是 countWords 而不是 howManyWords。
首先,你做了无限循环,因为count
是1
,你只是增加它。
其次,您甚至没有尝试在某些 IDE 中编写此代码,因为它会抛出语法错误,因为您正在将 string
分配给 int
,当你做 count = myString.substring()
因此,您可以使用 myString.indexOf
count
如果您不关心 myString
int count = 0;
while(myString.indexOf(" ") >= 0) {
count++;
myString = myString.substring(myString.indexOf(" ") + 1)
}
return count;
让我们假设您正在测试的字符串不包含前导或尾随空格,因为这会影响解决方案。您问题中的示例字符串不包含前导空格或尾随空格。
只需在循环中调用方法 indexOf(String, int)
,并且在每次迭代中将 int
参数设置为比上一次迭代中获得的参数多一个。一旦方法 indexOf()
返回的值为 -1(减一),您就完成了。但是不要忘记在退出循环后添加最后一个词。
String myString = "I have a dream";
int count = 0;
int index = 0;
while (index >= 0 && index < myString.length()) {
index = myString.indexOf(" ", index);
System.out.println("index = " + index);
if (index >= 0) {
index++;
count++;
}
}
if (index < 0) {
count++;
}
System.out.println("count = " + count);