首先,我正在嘗試構(gòu)建一個(gè)程序,根據(jù)輸入的電話號(hào)碼打印出所有可能的字母組合。我的問題是我無法讓我的遞歸函數(shù)工作,我得到了跟隨錯(cuò)誤堆棧。錯(cuò)誤指向第 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貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個(gè)贊
顯然,失敗的行表明letters
是null
. 例如,這將發(fā)生在您的地圖中不存在的"0"
or或任何其他."1"
phone
String
你必須處理 whereletters
之后null
的情況String letters = phone.get(digit)
。是跳過這個(gè)String
還是拋出一個(gè)關(guān)于不合適符號(hào)的顯式異常。
添加回答
舉報(bào)
0/150
提交
取消