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了,我理解错误,但我不明白为什么它会被抛入代码中。
答案 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 []
我希望它有所帮助