【发布时间】:2018-03-03 15:59:28
【问题描述】:
我需要编写 Java 程序来解析字符串中的单词。我不能使用 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,则将其添加到另一个列表中。
-
我会使用 StringBuilder 类代替替换和拆分。并且会得到句子作为参数。