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

あなたのifが間違っています。((Not P)または(Not R))は常にtrueになります。これは、notの1つが常にtrueになるためです。

于 2012-04-13T20:16:29.073 に答える
2

ANDの代わりに使うつもりだったと思いますOR。試す

if((packageType != 'P') && (packageType != 'R'))
                        ^^
于 2012-04-13T20:17:27.583 に答える
2

if ステートメントは、packageType が 'P' と等しくないか、または 'R' と等しくないかをチェックしています。これは常に true に解決されます。つまり、関数は常に -99 を返します。

于 2012-04-13T20:16:28.727 に答える
1

パッケージの種類が 'R' ではないためです。

于 2012-04-13T20:15:58.627 に答える
1

あなたの問題はif文にあると思います。あなたの条件は「not P OR not R」であるため、メソッドに P を渡すと、true と評価されます。これは、P ではなく R でもないため、true と評価されるためです。

ソニー

于 2012-04-13T20:33:24.927 に答える