首先,我正在嘗試構建一個程序,根據輸入的電話號碼打印出所有可能的字母組合。我的問題是我無法讓我的遞歸函數工作,我得到了跟隨錯誤堆棧。錯誤指向第 46 行是 "recursion("", line);和第 65 行是for (int i = 0; i < letters.length(); i++) {Exception in thread "main" java.lang.NullPointerException at exercise.test.PhoneNumberCombo.recursion(PhoneNumberCombo.java:46) at exercise.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)); } } }
1 回答

千巷貓影
TA貢獻1829條經驗 獲得超7個贊
顯然,失敗的行表明letters
是null
. 例如,這將發生在您的地圖中不存在的"0"
or或任何其他."1"
phone
String
你必須處理 whereletters
之后null
的情況String letters = phone.get(digit)
。是跳過這個String
還是拋出一個關于不合適符號的顯式異常。
添加回答
舉報
0/150
提交
取消