我正在嘗試編寫一個 java 程序來找出字符串中出現兩次的單詞數,但出現異常:數組索引越界輸入:2 10 恨愛和平愛和平恨愛和平愛和平8 Tom Jerry Thomas Tom Jerry Courage Tom Courage輸出:1 2完整的代碼是:class GFG { public static void main (String[] args) { Scanner sc = new Scanner(System.in); int t = sc.nextInt(); while(t>0){ int n = sc.nextInt(); int count = 0; String str = sc.next(); String strArray[] = str.split(" "); HashMap <String,Integer> wordCount = new HashMap<String,Integer>(); for(int i=0;i<n;i++){ if(wordCount.containsKey(strArray[i])){ wordCount.put(strArray[i],wordCount.get(strArray[i])+1)); } else{ wordCount.put(strArray[i],1); } } for (Map.Entry<String, Integer> entry : wordCount.entrySet()) { if(entry.getValue()==2) count++; } System.out.println(count); t--; } }}
2 回答

夢里花落0921
TA貢獻1772條經驗 獲得超6個贊
String str = sc.next();
這段代碼只能獲取一個單詞,但您打算獲取n單詞。
您可以擺脫數組,因為它是不必要的,然后使用:
for(int i=0;i<n;i++){
String word = sc.next();
if(wordCount.containsKey(word)){
wordCount.put(word,wordCount.get(word)+1));
}
else{
wordCount.put(word,1);
}
}
但是,更簡潔的寫法是:
for(int i=0;i<n;i++){
wordCount.compute(sc.next(), (word,count)-> (count==null)? 1 : count+1);
}
添加回答
舉報
0/150
提交
取消