gpt4 book ai didi

java - 为什么我的 HashMap 没有被填充

转载 作者:行者123 更新时间:2023-12-02 06:20:00 24 4
gpt4 key购买 nike

我的代码用于查找 100 以内的整数的阶乘。我正在使用 BigInteger,但我的问题是我的 HashMap 没有被填充。

public class FCTRL2 {   
static Map<Integer,BigInteger> list = new HashMap<Integer,BigInteger>();

public static void main(String[] args){
InputStreamReader read = new InputStreamReader(System.in);
BufferedReader in = new BufferedReader(read);
int numberOfInput=0;
String input=null;
try {
numberOfInput = Integer.parseInt(in.readLine());
} catch (NumberFormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

while(numberOfInput > 0){
try {
input = in.readLine();
} catch (NumberFormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

BigInteger inputBig = new BigInteger(input);
**System.out.println(factorial(inputBig));** prints correct factorial
**System.out.println(list.get(factorial(inputBig).intValue()));** prints null
numberOfInput--;
}
}

public static BigInteger factorial(BigInteger input){
if(list.containsKey(input.intValue()))
return list.get(input.intValue());

if(input.equals(new BigInteger("1")))
return new BigInteger("1");
BigInteger output;
output = input.multiply(factorial(input.subtract(new BigInteger("1"))));
list.put(input.intValue(), output);
return output;
}

}

最佳答案

替换

System.out.println(list.get(factorial(inputBig).intValue()));

System.out.println(list.get(inputBig.intValue()));

因为您要在此处插入要映射的值:list.put(input.intValue(), output);

关于java - 为什么我的 HashMap 没有被填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21093987/

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