java计算字符串中的单词

问题描述 投票:-1回答:3

我正在编写代码来查找字符串中的单词数量,代码如下:

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));

    }

}

我只是想知道为什么这段代码的代码输出不同?虽然我逐行检查了代码,但我找不到这两个代码输出不同的原因?任何人都可以请帮助

java string count words
3个回答
2
投票

由于您的分割字符串是"",因此每个字母都将被提取为单词。

只需将String space="";改为String space=" ";String space="\\s+";,你就可以了!

正则表达式工具\\s+表示在一次或多次出现空格后应该拆分字符串。


0
投票
String space="";

是错的。它是一个空字符串,将被错误地使用。

你最好用

     String space="\\s+"; 

要么

    String space=" ";

正则表达式“\\ s +”是“一个或多个空白符号”


0
投票

另一种选择可能是这样的:

 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());
}
© www.soinside.com 2019 - 2024. All rights reserved.