我正在编写代码来查找字符串中的单词数量,代码如下:
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());
}