Прежде всего, я пытаюсь создать программу, которая распечатывает все возможные комбинации букв на основе ввода номера телефона.
Моя проблема в том, что я не могу заставить мою функцию рекурсии работать, я получаю следующий стек ошибок. Ошибка указывает на строку 46 «recursion("", line);
» и строку 65 «for (int i = 0; i < letters.length(); i++) {
»
Exception in thread "main" java.lang.NullPointerException
at JPMorgan.test.PhoneNumberCombo.recursion(PhoneNumberCombo.java:46)
at JPMorgan.test.PhoneNumberCombo.main(PhoneNumberCombo.java:65)
Это мой код:
import org.apache.commons.io.IOUtils;
public class PhoneNumberCombo {
static void recursion(String combination, String next_digits) {
List<String> result = new ArrayList<String>();
Map<String, String> phone = new HashMap<String, String>() {{
put("2", "abc");
put("3", "def");
put("4", "ghi");
put("5", "jkl");
put("6", "mno");
put("7", "pqrs");
put("8", "tuv");
put("9", "wxyz");
}};
// BASE CASE no more digits found
if (next_digits.length() == 0) {
// the combination is built
result.add(combination);
System.out.println(result);
}
else {
String digit = next_digits.substring(0, 1);
String letters = phone.get(digit);
for (int i = 0; i < letters.length(); i++) {
String letter = phone.get(digit).substring(i, i + 1);
recursion(combination + letter, next_digits.substring(1));
}
}
}
public static void main(String[] args) throws IOException {
InputStream phoneInputStream = IOUtils.toInputStream("123456", "UTF-8");
InputStreamReader reader = new InputStreamReader(phoneInputStream);
BufferedReader in = new BufferedReader(reader);
String line = in.readLine();
if (line.length() != 0)
recursion("", line);
}
}