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()
方法。始终在问题中添加完整信息。最好的方法是在你打字完毕后重新阅读问题,看看你是否提供了足够的信息。