【发布时间】:2014-12-23 02:08:50
【问题描述】:
我有一个我无法解决的问题。我想解决 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 来收集这些数据(这仅适用于等式的左侧):
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加一个数字,所以Value仍然是null。所以我想将Hashmap中每个值的默认值设置为0。有没有可能这样做?
【问题讨论】:
-
请注意,
Map<K, Integer>通常实际上是Multiset<K>。 Guava 提供了一组非常好的Multiset实现。在此处使用Multiset可以避免您遇到的空指针问题。
标签: java hashmap default-value