У меня есть проблема, которую я не могу решить. Я хочу решить Alphametics (например, SEND + MORE = MONEY -> O = 0, M = 1, Y = 2, E = 5, N = 6, D = 7, R = 8, S = 9) чтобы получить Уравнение из этого: 1000 * S + 100 * E + 10 * N + D + 1000 * M + 100 * O + 10 * R + E = 10000 * M + 1000 * O + 100 * N + 10 * E + Y Так что я пытался использовать HashMap, чтобы собрать эти данные (это только для левой части уравнения):Значения по умолчанию в Hashmap
Scanner s = new Scanner(System.in);
int HowMuchWords = s.nextInt();
String[] Words = new String[HowMuchWords];
for(int i = 0; i<Words.length;i++){
Words[i] = s.next().toUpperCase();
}
HashMap<Character,Integer> Letters = new HashMap<Character, Integer>();
for(int i = 0;i<Words.length;i++) {
char[] LettersWord = Words[i].toCharArray();
for (int j = 0; j < LettersWord.length; j++) {
Letters.put(LettersWord[j],Letters.get(LettersWord[j])+(int) Math.pow(10, LettersWord.length - 1 - j));
}
Но у меня есть проблемы с командой Letters.get. Поскольку я хочу добавить число в значение null, значение по-прежнему равно нулю. Поэтому я хочу установить значение по умолчанию для каждого значения в Hashmap равным 0. Есть ли возможность сделать это?
возможно дубликат [HashMap для возвращения значения по умолчанию для не нашли ключей?] (Http://stackoverflow.com/questions/7519339/hashmap-to-return-default-value-for-non-found -keys) – dimo414
Обратите внимание, что aa 'Map' часто является ['Multiset '] (http://en.wikipedia.org/wiki/Multiset). [Guava] (https://code.google.com/p/guava-libraries/wiki/NewCollectionTypesExplained) предоставляет очень хороший набор ['Multiset'] (http://docs.guava-libraries.googlecode.com/ git/javadoc/com/google/common/collect/Multiset.html). Использование «Multiset» здесь позволит избежать проблемы с нулевым указателем, с которой вы работаете. –
dimo414