我有一个无法解决的问题。我想解决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。有可能这样做吗?
最佳答案
到目前为止最简单的方法是编写
Integer r = Letters.get(...);
if (r==null)
r=0;
而不是乱七八糟地安排你的 map 返回默认值。
或者
int r = Letters.contains(...) ? Letters.get(...) : 0;
也会这么做。
关于java - HashMap 中的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26595318/