我的代码有问题。 我的代码制作了一个价值游戏。
有2件物品,每件物品都有价值和重量,船只有最大重量含量。 当我输入这些值时,控制台返回1.
有人可以告诉我为什么整数类返回1以及如何修复它?
public class Sort {
static int knapsackLight(int value1, int weight1, int value2, int weight2, int maxW) {
if (weight1 + weight2 <= maxW) return value1 + value2;
else{
int d1 = maxW - weight1;
int d2 = maxW - weight2;
if (d1>=0 && d2>=0){
if (value1 >= value2) return value1;
else return value2;
}
else if (d1>=0 && d2<0) return d1;
else if (d2>=0 && d1<0) return d2;
}
return 0;
}
public static void main(String[] a){
int val1 = 5;
int val2 = 9;
int w1 = 10;
int w2 = 6;
int maxW = 7;
System.out.println(knapsackLight(val1,w1,val2,w2,maxW));
}
}
答案 0 :(得分:0)
1是这些值的正确答案。
如果(weight1 + weight2&lt; = maxW)为假(10 + 6&gt; 7)
(d1&gt; = 0&amp;&amp; d2&gt; = 0)为false,因为 d2 小于 0(-3)
所以你要返回 d1 , maxW(7) - weight1(6)= 1 。
答案 1 :(得分:0)
根据输入值,您将获得不同的返回值。您可以在返回值之前添加调试语句,以检查哪个条件保持true值。 e.g。
System.out.println("value1");
return value1;
...
...
System.out.println("value2");
return value2;
...
...
System.out.println("d1");
return d1;
...
...
System.out.println("d2");
return d2;