为什么类整数自动返回1

时间:2016-02-19 15:09:03

标签: class integer

我的代码有问题。 我的代码制作了一个价值游戏。

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

2 个答案:

答案 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;
相关问题