Java 字符串无限循环中的字数
有人能告诉我这有什么问题吗?我试图让程序返回字符串中的字数。它被困在一个无限循环中Java 字符串无限循环中的字数,java,Java,有人能告诉我这有什么问题吗?我试图让程序返回字符串中的字数。它被困在一个无限循环中 int NumberNames(String wholename) { String testname=wholename; int numnames=0; int posBlank= testname.indexOf(' '); while(testname.length()>0) { testname = testname.
int NumberNames(String wholename)
{
String testname=wholename;
int numnames=0;
int posBlank= testname.indexOf(' ');
while(testname.length()>0)
{
testname = testname.trim();
testname=testname.substring(posBlank+1,testname.length());
numnames++;
System.out.println(testname);
}
return numnames;
}
两个问题。在循环中不重置posBlank的值,如果传入一个没有空格的字符串,子字符串总是返回整个字符串。你需要同时解决这两个问题。试试这个:
int NumberNames(String wholename)
{
String testname=wholename;
int numnames=1;
int posBlank= testname.indexOf(' ');
while(posBlank > 0)
{
testname = testname.trim();
testname=testname.substring(posBlank+1,testname.length());
posBlank= testname.indexOf(' ');
numnames++;
System.out.println(testname);
}
return numnames;
}
改用
wholeName.trim().split(“”).length
为什么不改用String.split(\\s)
String testname=wholename;
String[] words = testname.split("\\s");
sysout(words.length);
虽然这实际上并没有同时考虑多个空格。。。您可以运行一个循环,将每两个空白部分替换为一个空白部分,直到长度保持不变。
return wholename.length() - wholename.replace(" ", "").length() + 1