任务:有一个字符串。计算字符串中的单词数。该单词被认为由空格分隔。 (您不能使用正则表达式)
如何解决?如果您连续输入两个或多个空格-会认为这些单词,但是我需要算作单词之间的一大笔钱
示例 I_live_in_Lviv-4个单词,但是如果我们再放一个空格(例如在Lviv之前的示例)-> I_live_in__Lviv-5个单词(而不是下划线,请加一个空格(-s))< / p>
Scanner in = new Scanner(System.in);
String line = in.nextLine();
int n = 0;
if (line.length() != 0) {
n++;
for (int i = 0; i < line.length(); i++) {
if (line.charAt(i) == ' ') {
n++;
}
}
}
System.out.print(n);
答案:
Scanner in = new Scanner(System.in);
String line = in.nextLine();
int count = 0;
for(int i = 0; i <= line.length() - 1; i++){
if(Character.isLetter(line.charAt(i))){
count++;
for( ; i <= line.length() - 1; i++){
if(line.charAt(i) == ' '){
i++;
break;
}
}
}
}
System.out.print(count);
in.close();
结果:
I_live_in__Lviv_-4
答案 0 :(得分:0)
因此,据我了解,您有一个字符串,例如“您好,我叫Matthew”,您想查找字符串中有多少个单词。我一次只需要输入两个字符,然后将它们逐个递增,然后测试第一个字符是否为空格,第二个字符是否为空格。所以取“ h”,这就是一个词的开头。然后是“ hi”,不是,依此类推。当然,您需要检查第一个字符是否不是空格,以及是否不增加字数。
编辑:对不起,我没有详细说明,今天早晨我处于时间紧缩状态。使用String.subString(i, i + 2);
从字符串中获取两个字符。然后使用subString()或charAt()检查新字符串(我建议使用charAt()),当然要考虑字符串长度-2以防止引发错误。
for (int i = 0; i < exampleString.length - 2; i++) {
//subtract 2 to prevent subString from throwing an error
if ((exampleString.subString(i, i + 2).charAt(1) = " " && exampleString.subString(i, i + 2).charAt(2) != " ") || i = 0) {
//add 2 to get a space and a letter, then test the first character for a
//space and the second character for NOT a space, also increment words if
//i = 0, presuming there is no space at the beginning of the string
words++;
}
}
@JB Nizet基本上是这样说的,只是以回答的形式...对不起,直到现在我还没有看到您的评论,我不会输入所有这些信息
答案 1 :(得分:0)
只需再添加一个变量并在其中存储前一个字符。如果返回错误,则检查下一个字符是否为空格。
答案 2 :(得分:0)
Scanner in = new Scanner(System.in);
String line = in.nextLine();
int count = 0;
for(int i = 0; i <= line.length() - 1; i++){
if(Character.isLetter(line.charAt(i))){
count++;
for( ; i <= line.length() - 1; i++){
if(line.charAt(i) == ' '){
i++;
break;
}
}
}
}
System.out.print(count); //I_live_in__Lviv_ - 4
in.close();