java计算字符串中的单词
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java计算字符串中的单词相关的知识,希望对你有一定的参考价值。
我正在编写代码来查找字符串中的单词数量,代码如下:
package exercises;
import java.util.Scanner;
public class count {
public static int countwords(String str){
int count=0;
String space="";
String[] words=str.split(space);
for(String word:words){
if(word.trim().length()>0){
count++;
}
}
return count;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("Enter the string");
Scanner input=new Scanner(System.in);
String s=input.nextLine();
System.out.println(countwords(s));
}
}
为了做练习,我再次编写了这段代码
package exercises;
import java.util.Scanner;
public class count {
public static int countwords(String str){
int count=0;
String space="";
String[] words=str.split(space);
for(String word:words){
if(word.trim().length()>0){
count++;
}
}
return count;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("Enter the string");
Scanner input=new Scanner(System.in);
String s=input.nextLine();
System.out.println(countwords(s));
}
}
我只是想知道为什么这段代码的代码输出不同?虽然我逐行检查了代码,但我找不到这两个代码输出不同的原因?任何人都可以请帮助
答案
由于您的分割字符串是""
,因此每个字母都将被提取为单词。
只需将String space="";
改为String space=" ";
或String space="\s+";
,你就可以了!
正则表达式工具\s+
表示在一次或多次出现空格后应该拆分字符串。
另一答案
String space="";
是错的。它是一个空字符串,将被错误地使用。
你最好用
String space="\s+";
要么
String space=" ";
正则表达式“\ s +”是“一个或多个空白符号”
另一答案
另一种选择可能是这样的:
public static void main(String[] args) {
System.out.println("Enter the string");
Scanner input=new Scanner(System.in);
String line=input.nextLine();
System.out.println(Arrays.stream(line.split(" ")).count());
}
以上是关于java计算字符串中的单词的主要内容,如果未能解决你的问题,请参考以下文章
使用 C++ 反转句子中的每个单词需要对我的代码片段进行代码优化