计算数组中的单词

时间:2014-05-31 23:27:30

标签: java

我试图计算数组中的单词。但它没有用。

我的代码:

public static int countWords(String input)
{
    char []a = input.toCharArray();
    int spaces = 0;
    for(int i = 0; i < a.length; i++)
        if(a[i] == ' ')
            spaces++;
    return spaces + 1;  
}

有什么问题?

我的输入是"stack over flow"

2 个答案:

答案 0 :(得分:1)

您的代码计算空格数并使用它来推断单词数。

不幸的是,这种方法只有在每个单词之间只有一个空格且没有前导或尾随空格时才有效。它还假设只有一种空格特征,这也不正确。

(旁白:如果您正在阅读用户输入的文字,那么不切实际期望他们总是在每个单词之间放置一个空格,而不是其他地方。即使规范说明他们将/应该这样做。)

一个简单但更强大的替代方案是:

  • 修剪字符串以删除前导/尾随空格
  • 使用String.split来分割字符串,为单词之间提供一个简单的正则表达式&#34 ;;例如"\\s+"说&#34;一个或多个空白字符&#34;,
  • 返回生成的单词数组的长度。

答案 1 :(得分:0)

您的代码有什么问题?它看起来在这里工作正常。

如果输入字符串包含不可用空间,则必须通过测试输入代码来处理此问题(160):

if(a[i] == 160 || a[i] == ' ')
    spaces++
相关问题