Есть несколько способов сопоставить буквы цифре.Если вы хотите простое сопоставление, a:1,b:2,...,i:9,j:10,...,z:26
вы можете сделать следующее и воспользоваться преимуществами сопоставления фактов с целочисленными значениями:
StringBuilder sb= new StringBuilder();
for (char letter : phoneWord.toLowerCase().toCharArray()) {
sb.append((int) letter - 96);
}
System.out.println(sb.toString());
Вы можете добавить модуль для сохранения чисел от 0 до 9 с помощью%10
это будет карта a:1,b:2,...,i:9,j:0,...,z:6
sb = new StringBuilder();
for (char letter : phoneWord.toLowerCase().toCharArray()) {
sb.append(((int) letter - 96) % 10);
}
System.out.println(sb.toString());
Если вы хотите, чтобы пользовательское отображение, такое как в телефоне, вы можете создать карту следующим образом:
Map<Character, Integer> letterMap = new HashMap<>();
letterMap.put('a', 1);
letterMap.put('b', 1);
letterMap.put('c', 1);
letterMap.put('d', 2);
// ...
letterMap.put('z', 9);
sb = new StringBuilder();
for (char letter : phoneWord.toLowerCase().toCharArray()) {
sb.append(letterMap.get(letter));
}
System.out.println(sb.toString());
Яиспользуя .toLowerCase()
в строке, чтобы уменьшить количество букв, которые необходимо отобразить.Как (int) 'A' = 65
и (int) 'A' = 97