Java:ClassCastException整数错误

时间:2017-10-12 02:37:11

标签: java knapsack-problem

Exception in thread "main" java.lang.ClassCastException: [I cannot be cast to java.lang.Integer
at KnapSackWeights$Sack.getWeight(KnapSackWeights.java:124)
at KnapSackWeights.fillKnapSackRecursion(KnapSackWeights.java:93)
at KnapSackWeights.fillKnapSack(KnapSackWeights.java:73)
at KnapSackWeights.main(KnapSackWeights.java:33)

嗨,我正在处理背包问题,用户在一行中输入数字,第一个数字是目标。但是,我一直收到上面指定的错误。我已经google了,我理解错误,但我不明白为什么它会被抛入代码中。

2 个答案:

答案 0 :(得分:2)

你的问题就在这一行

myWeights.bagOfWeights.add(weights);

您将类型int[]的值添加到您真正想要包含Integer值的结构中。从结构中检索该数组时,JVM无法将其转换为Integer

为了让编译器捕获这种错误,你最好编写

class Sack extends ArrayList<Integer>

指示编译器确保Integer中唯一可以放置Sack值。

当然,这不是原始错误的修复,您尝试添加int[]。要解决这个问题,您可能想要编写某种循环 - 遍历数组,逐个添加int值。

答案 1 :(得分:0)

myWeights.bagOfWeights.add(int)not myWeights.bagOfWeights.add(int []); 权重是int []

我希望它有所帮助