Java 计算给定字符串中的单词数
我有两种方法来确定字符串中的字数,但结果是永远Java 计算给定字符串中的单词数,java,string,Java,String,我有两种方法来确定字符串中的字数,但结果是永远1 public static void main(String[] args) { System.out.println("Enter your String:"); String string = in.next(); System.out.println("Number of Words are:" + countWords(string)); System.out.println("Number of Wor
1
public static void main(String[] args) {
System.out.println("Enter your String:");
String string = in.next();
System.out.println("Number of Words are:" + countWords(string));
System.out.println("Number of Words are:" + countWords2(string));
}
public static int countWords(String str) {
String[] splited2 = str.split(" ");
return splited2.length;
}
public static int countWords2(String str) {
String trimed = str.trim();
return trimed.split("\\s+").length;
}
<>为什么?< p> <代码>扫描器> nnEnter()/<代码>方法,这是我假设您正在使用的方法,读取下一个令牌,默认情况下,它不将空白指定为令牌的一部分。因此,它真正读取输入,直到找到第一个空格
因此,您的输入只包含一个单词,因此是结果。尝试使用Scanner#nextLine()
方法,您将得到预期的结果。用Scanner.nextLine()替换in.next(),因为next()将为您提供下一个标记,而不是所有行
Scanner scanner = new Scanner(System.in);
System.out.print("Enter a sentence:");
String sentence = scanner.nextLine();
System.out.println("Number of Words are:" + countWords(sentence));
或者你也可以使用它,因为它可以更快地阅读整行内容
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
String sentence = br.readLine();
System.out.println("Number of Words are:" + countWords(sentence));
我建议建立这样一个功能:
public static int getWordCount(String string){
int counter = 0;
boolean wordFound = false;
int endOfLineIndex = s.length() - 1;
for (int i = 0; i < endOfLineIndex; i++) {
if (Character.isLetter(s.charAt(i)) == true)) {
wordFound = true;
} else if (Character.isLetter(string.charAt(i)) == false && wordFound == true) {
counter++;
wordFound = false;
} else if (Character.isLetter(string.charAt(i))) {
counter++;
}
}
return counter;
}
publicstaticintgetwordcount(字符串){
int计数器=0;
boolean-wordFound=false;
int endoflindex=s.length()-1;
对于(int i=0;i
希望我能帮忙 你对这个方法有什么意见?我试过了,它对我有效你的输入字符串是什么?添加一些输入字符串以及预期的和给定的结果。@pogopaule例如:
hello world hello world
,它说的是1
!你认为你问题中给出的信息足以回答它吗。您没有告诉我们中的是什么。其中是next()
方法。始终在问题中添加完整信息。最好的方法是在你打字完毕后重新阅读问题,看看你是否提供了足够的信息。