使用Nest for循环计算唯一单词

时间:2018-03-03 15:59:28

标签: java arrays string unique

我需要编写Java程序来解析String中的单词。我不能使用Java库提供的工具,而是创建执行所有操作的代码。该类应该能够将给定的句子分解为单词,其中单词被定义为任何空格,逗号或句点之间的字符。该类应该有一个构造函数,它将一个句子作为参数。该类应定义几种公共值方法。该类应该有一个名为" public static void main()"这演示了类可以用下面显示的特定硬编码句子做什么。演示应该将此文本写入控制台:

句: 豌豆和胡萝卜都可以,但普通豌豆更好。 字数:10 唯一字数:8

这是我到目前为止所拥有的。统计单词总数并不太难以证明是正确的。然而,计算独特单词的数量是困难的部分。

public class SP
{
    String sentence; 
    String []words;
    String []uWords;
    public SP (String s)
    {
        sentence = s;
        System.out.println(s);
        words = parse (sentence);
        System.out.println("Number of words is "+ words.length);

    }

public static void main ()
{
    SP sp = new SP("Peas and carrots are ok, but plain peas are better.");
}

public String[] parse(String s)
{
    s = s.replace(".", ""); //delete punctuation
    s = s.replace(",", "");
    s = s.replace("?", "");
    s = s.replace("!", "");
    String w[]=s.split(" "); //split at white spaces
    return w;
}

public int unique (String[]w)
{
    int u=0;
    int i;
    int j;

    for (i=0; i < w.length; i++)
    {
        for (j=0; j<i; j++)
        {
            if (w[i].equals(w[j]))
            {
                u++;
            }
        }
    }
    return u;
    }
}

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

使用Set,按定义只包含唯一条目,将在线性时间内执行。

String[] words = {"Hello", "World", "Hello"};
Set set = new HashSet<String>(Arrays.asList(words));
System.out.println(set.size());