1

我已经有一段时间没有使用 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;
        }
4

6 回答 6

11

您的 if() 应该使用AND. 既然是OR现在,那么您的 packageType 既不是 P 也不是 R 总是正确的。

于 2012-04-13T20:16:00.843 回答
3

你的如果是错误的。((Not P) 或 (Not R)) 将永远为真,因为其中一个不永远为真。

于 2012-04-13T20:16:29.073 回答
2

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

于 2012-04-13T20:16:28.727 回答
2

我认为您的意思是使用AND而不是OR. 尝试

if((packageType != 'P') && (packageType != 'R'))
                        ^^
于 2012-04-13T20:17:27.583 回答
1

因为包类型不是'R'!

于 2012-04-13T20:15:58.627 回答
1

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

桑尼

于 2012-04-13T20:33:24.927 回答