我一切正常,除了我无法弄清楚为什么我的代码找不到最不常见的字母我有一个 for 循环,它应该找到最不常见的字母,但它没有给我任何东西。它给了我最常见但并非最不重要的。
FileReader file = new FileReader("\\src\\alphaCounter\\");
BufferedReader reader = new BufferedReader(file);
HashMap<Character,Integer> myHashSet = new HashMap<Character, Integer>();
myHashSet.put('a', 0);
/** this goes to Z
int mostCommon = 0;
char mostCommonLtr = ' ';
int leastCommont = 0;
char leastCommonLtr = ' ';
Object[] words = reader.lines().toArray();
/**
* this loop has changed all the letters to lower case
*/
for(Object word : words){
String wordString = word.toString();
wordString = wordString.toLowerCase();
/**
*
*/
if(wordString.length() > bigWord.length()){
bigWord = wordString;
}
for(int alpha = 0; alpha < wordString.length(); alpha++){
myHashSet.put(wordString.charAt(alpha), myHashSet.get(wordString.charAt(alpha)) + 1);
}
}
for(int alpha = 'a'; alpha<= 'z'; alpha++){
System.out.println("The number of " + (char)alpha + "'s in the words.txt = " + myHashSet.get((char)alpha ));
if(myHashSet.get((char)alpha) > mostCommon) {
mostCommonLtr = (char)alpha;
mostCommon = myHashSet.get((char)alpha);
/**
* this gave me the most common letter
*/
if(myHashSet.get((char)alpha) < leastCommont) {
leastCommonLtr = (char)alpha;
leastCommont = myHashSet.get((char)alpha);
/**
* this was supposed to give me the least common
*/
}
}
System.out.println("The letter that appeared the least is " + leastCommonLtr);
System.out.println("The letter that appears the most is " + mostCommonLtr);
最佳答案
替换
int leastCommont = 0;
与
int leastCommont = Integer.MAX_VALUE;
原因
与 leastCommont
初始化为 0,则您的代码永远不会满足以下条件:
if(myHashSet.get((char)alpha) < leastCommont)
关于java - 无法让我的 for 循环给我 HashMap 中最不常见的字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49420247/