我需要编写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;
}
}
非常感谢任何帮助。
答案 0 :(得分:0)
使用Set,按定义只包含唯一条目,将在线性时间内执行。
String[] words = {"Hello", "World", "Hello"};
Set set = new HashSet<String>(Arrays.asList(words));
System.out.println(set.size());