我對我的任務有幾點疑問。使用StringTokenizer計算每個單詞的頻率
這個任務是讓用戶輸入一個句子,當用戶輸入一個空字符串時,程序統計每個單詞的頻率,退出程序。此外,該程序是區分大小寫的。例如,蘋果是蘋果是手機,結果是Apple-1;是-2;一個-1; A-1;電話-1。這裏是我的代碼:
public static void main(String[] args)
{
while (true)
{
System.out.println("Enter a sentence:");
Scanner keyboard = new Scanner(System.in);
String sentence = keyboard.nextLine();
if (sentence.isEmpty()) // quit the program when user enter an empty string
{
break;
}
else
{
StringTokenizer st = new StringTokenizer(sentence);
while (st.hasMoreTokens())
{
List<String> sentenceElement = new ArrayList<String>();
sentenceElement.add(st.nextToken());
}
System.out.println(sentenceElement);
}
}
我有幾個問題。
- 我嘗試將所有標記保存到名爲sentenceElement的數組中,並嘗試輸出,但失敗。編譯器顯示
error: cannot find symbol System.out.println(sentenceElement);
- 我怎樣才能計數每個單詞的頻率是多少?
非常感謝,我非常感謝您的回答和解決方案。
不使用StringTokenizer,它是遺留的,不應該再使用。引用StringTokenizer api:StringTokenizer是一個遺留類,爲了兼容性原因被保留,儘管在新代碼中不鼓勵使用它。建議任何尋求此功能的人使用String或java.util.regex包的拆分方法。 – Stultuske
檢查[局部變量聲明的範圍](https://docs.oracle.com/javase/specs/jls/se7/html/jls-6.html#d5e6906)。對於第2部分,使用'Map'來存儲單詞和它的出現將是個好主意 – sam
這是以這種方式完成作業的不好方法。 :P。請自行嘗試這樣的事情。 –