gpt4 book ai didi

java - 使用递归方法的电话号码到字母的组合引发空指针异常

转载 作者:行者123 更新时间:2023-12-02 03:47:09 25 4
gpt4 key购买 nike

首先,我正在尝试构建一个程序,根据输入的电话号码打印出所有可能的字母组合。

我的问题是我无法让递归函数工作,我收到了以下错误堆栈。错误指向第 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));
}
}

}


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);

}
}

最佳答案

显然失败的行表明lettersnull。例如,对于 "0""1"(它们不存在于您的手机 map 中)或任何其他字符串

您必须处理 String letter = phone.get(digit) 之后的 lettersnull 的情况。是否跳过此String或抛出有关不适当符号的显式异常。

关于java - 使用递归方法的电话号码到字母的组合引发空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56797587/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com