遍历哈希图时数组索引超出范围的异常

时间:2018-09-02 12:56:23

标签: java arrays hashmap

我正在尝试编写一个Java程序来找出字符串中出现两次的单词数,但出现异常:

  

数组索引超出范围

输入:

2 10 讨厌爱和平爱和平讨厌爱和平爱和平 8 汤姆·杰里(Tom Jerry)汤姆(Tom)

输出:

1 2

完整的代码是:

small_file = dd.read_csv('file1.txt', sep='|', dtype=str)
large_file = dd.read_csv('file2.txt', sep='|', dtype=str)
merged = dd.merge(large_file, small_file, on='key')
merged.to_csv('path/to/myfiles.*.csv')

2 个答案:

答案 0 :(得分:0)

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);
}

答案 1 :(得分:0)

我认为

for(int i=0;i<n;i++){

应该是:

for(int i=0; i < strArray.length; i++) {