为什么这会一直返回-99?

时间:2012-04-13 20:14:27

标签: java

我在相当长一段时间内没有使用过java而且我对此感到有些沮丧...它总是返回-99但我不知道逻辑错在哪里。

public static void main(String[] args){
    System.out.println(shippingCost('P',10));
}

public static int shippingCost(char packageType, int weight)
{
    String e1 = "Legal Values: Package Type must be P or R";
    String e2 = "Legal Values: Weight < 0";
    int cost = 0;
        if((packageType != 'P')||(packageType != 'R'))
        {
             //throw new Exception(e1);
             return -99;
        } else {
            return -1;
        }

6 个答案:

答案 0 :(得分:11)

你的if()应该使用AND。既然它现在是OR,那么你的packageType既不是P也不是R总是如此。

答案 1 :(得分:3)

你的错了。 ((不是P)或(不是R))将永远是真的,因为其中一个不会永远是真的。

答案 2 :(得分:2)

您的if语句正在检查packageType是否不等于'P'或者它不等于'R'。这将始终解析为true,这意味着您的函数将始终返回-99。

答案 3 :(得分:2)

我认为您打算使用AND代替OR。尝试

if((packageType != 'P') && (packageType != 'R'))
                        ^^

答案 4 :(得分:1)

因为包裹类型不是'R'!

答案 5 :(得分:1)

我认为您的问题出在if语句中。由于你的条件是“不是P或不是R”,那么如果你将P传递给方法,它将评估为真。这是因为它不是P但它也不是R,因此它的评估结果为真。

桑尼