如何计算以字符串形式给出的句子的单词?我们只允许使用以下内容:for
循环,if
statemant,while
,charAt
,length()
。
我写了这段代码:
public static int getWordCount()
{
String data = "bla bla bla bla";
int Count = 0;
for (int i=0; i<data.length(); i++)
{
if (data.charAt(i) != ' ')
Count ++;
}
return Count;
}
但它只计算字母而不是单词。
答案 0 :(得分:9)
这是一个建议:计算' '
的数量并加1?
示例:
"bla bla bla bla"
1 2 3 : 3 + 1 = 4
"hello"
: 0 + 1 = 1
如果你想得到想象,你可以保留一个名为lastWasSpace
的布尔变量,在运行到空格时将其设置为true,当遇到非空格字符时将其设置为false。如果您只在Count
为false时递增lastWasSpace
,那么您将能够处理具有多个连续空格的字符串。
"bla bla bla"
1 2 : 2 + 1 = 3
lastWasSpace: FFFFTTTFFFFTTTTTFFFF
答案 1 :(得分:2)
给定的代码确实会计算字母而不是单词。您可能希望将条件更改为:
if (data.charAt(i) == ' ')
这意味着,如果找到空格,这将标记下一个单词的开头。此外,最后一个字不会被计算在内,因此您应该返回Count+1
而不是Count
。
我在这里做了几个假设:
- 两个词之间只有一个空格。
- 不会有任何前导或尾随空格。
醇>
要考虑单词之间的多个空格,您需要稍微修改一下代码。不是检查字符是否是空格,而是检查字符是否为非空格,而前一个字符对于第一个单词的情况是空格还是无字符。这也可以处理前导和尾随空格。
答案 2 :(得分:1)
String ss = " leading spaces in string ";
String[] sa = ss.trim().split("\\w+");
System.out.println(sa.length);
请注意使用trim
来处理周围的空格。
答案 3 :(得分:1)
public class Main {
public static void main(String[] args) {
String data = "This is a Test";
int wordCount = 1;
int charCount = 0;
for (int i = 0; i < data.length(); i++) {
if (data.charAt(i) == ' ') {
wordCount++;
} else {
charCount++;
}
}
System.out.println("wordCount = " + wordCount);
System.out.println("charCount = " + charCount);
}
}
答案 4 :(得分:0)
使用以下代码计算行中的单词
int index = 0;
int numWords =0;
boolean prevwhitespace = true;
String line = "bla bla bla bla";
while(index < line.length())
{
char c = line.charAt(index++);
boolean currwhitespace = Character.isWhitespace(c);
if(prevwhitespace && !currwhitespace)
{
numWords++;
}
prevwhitespace= currwhitespace;
}
System.out.println("no. of words in the line :: " +numWords);
答案 5 :(得分:0)
我的解决方案:
public static int getWordCount() {
String data = "bla bla bla bla";
String[] arr = data.split(" ");
return arr.length;
}
答案 6 :(得分:-2)
String str = " Hello there my name is Bill ";
str = str.trim();
int count = 0;
for(int i = 0; i<str.length(); i++) {
if(str.charAt(i) == ' ' && str.charAt(i-1) != ' ') {
count++;
}
}
System.out.println(count+1);