字数java

时间:2015-11-02 16:42:38

标签: java arrays string arraylist return

所以我的代码应该返回单词的数量(单词是字母的长度)并且它的作用除了当我输入任何0或更少的东西时,某些pplease可以帮助发现错误吗?

编辑代码:

public class WordCount {
    public static int countWords(String original, int minLength){

        String[] s1 = original.split("\\s+");

        for(int i = 0; i < s1.length; i++){
            s1[i] = s1[i].replaceAll("^\\W]", "");
        }


        int count = 0;
        for(int i = 0; i < s1.length; i++){
            String str = s1[i];
            int len = 0;
            for(int x = 0; x < str.length(); x++){
                char c = str.charAt(x);

                if(Character.isLetter(c) == true){
                    len ++;
                }
            }
            if(len >= minLength){
                count ++;
            }
        }

        return count;
    }

    public static void main(String[] args){
        System.out.println("enter string: ");
        String s = IO.readString();

        System.out.println("min length: ");
        int m = IO.readInt();

        System.out.println(countWords(s, m));


    }

}

2 个答案:

答案 0 :(得分:1)

  

试试这个:

 String s = original.replaceAll("[\\W]", " ").replaceAll("[\\s]+", " ");

因为你必须在这里替换超过1的空格。

答案 1 :(得分:1)

我会应用一个使用regular expression处理文本的解决方案。

我准备了一个代码草图,可以总结如下:

String[] words = myString.replaceAll("[^a-zA-Z ]", " ").split("\\s+");

此代码的作用是:

  • 用空格替换不是字母(因为你只说字母)
  • 在空格上分割结果

结果数组words包含原始字符串中包含的所有单词(即字母序列)。

可以找到完整的示例here。在这个例子中,我只是将单词打印为列表。如果你只想要单词的数量,你只需要返回数组中元素的数量。