I have to create a class called MakeMap with a single static method called countLetters(). The method should take as a parameter a word formed of lowercase letters and return a map of the counts of the letters in the word. This is the test code for the Main class (which I cannot edit):
import java.util.Map; import java.util.List; import java.util.ArrayList; import java.util.Collections; public class Main { public static void main(String [] args) { Map<Character, Integer> count = MakeMap.countLetters("hello"); List<Character> letters = new ArrayList<Character>(count.keySet()); Collections.sort(letters); for(Character letter : letters) System.out.println("There are " + count.get(letter) + " of the letter '" + letter + "'"); } }
The output must be formatted like this also: $ java Main There are 1 of the letter ‘e’ There are 1 of the letter ‘h’ There are 2 of the letter ‘l’ There are 1 of the letter ‘o’
This is what I have attempted so far in my MakeMap class. I feel like I only need a couple of minor adjustments to get this working.
import java.util.Map; import java.util.TreeMap; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; public class MakeMap { public static Map countLetters(String word) { HashMap<Character, Integer> charCountMap = new HashMap<Character, Integer>(); String w = word.toLowerCase(); // checking each char of strArray for(int i = 0; i < word.length(); i++) { if(charCountMap.containsKey(word.charAt(i))) { // If char is present in charCountMap, // incrementing it's count by 1 charCountMap.put(word.charAt(i), charCountMap.get((word.charAt(i)) + 1 )); } else { // If char is not present in charCountMap, // putting this char to charCountMap with 1 as it's value charCountMap.put(word.charAt(i), 1); } } return charCountMap; } }
This is the error message I am getting: Note: Main.java uses unchecked or unsafe operations. Note: Recompile with -Xlint:unchecked for details.
Advertisement
Answer
Incorrect brackets, should be:
charCountMap.put(word.charAt(i), (charCountMap.get(word.charAt(i)) + 1));
additionaly you must return charCountMap
from this method isntead of print it out there, so the method must be defined as public static Map<Character, Integer> countLetters(String word)