1

特定の値を取得したい場合に、このような一連の if/else ステートメントがある場合、方程式の外でその値にアクセスするにはどうすればよいでしょうか? 私はすべてコマンドプロンプトを通過させており、追加のクラスはありません。

if (shippingInput == 1)
{
    double shippingAmount = shippingDetails * 3;
}
else if (shippingInput == 2)
{
    double shippingAmount = shippingDetails * 4;
}
else
{
    double shippingAmount = shippingDetails * 5.5;
}

私が持っている私のコードの終わりに向かって

double shippingCost = shippingAmount + surcharge;

しかし、「shippingAmount」と「surcharge」という名前は現在のコンテキストには存在しないと言われています。

ご協力いただきありがとうございます!まだ回答をマークすることはできませんが、if/else ブラケットの外側でステートメントを宣言し、それぞれから double を削除すると、完全に機能しました。

4

6 に答える 6

2

ステートメントの外で変数を定義する必要があります。

double shippingAmount;


/*some more logic*/

if (shippingInput == 1)
{
    shippingAmount = shippingDetails * 3;
}
else if (shippingInput == 2)
{
    shippingAmount = shippingDetails * 4;
}
else
{
    shippingAmount = shippingDetails * 5.5;
}

if/else ステートメントで変数を定義することにより、変数は中かっこのコンテキスト内にのみ存在するため、コードブロックから抜け出すとアクセスできなくなります。

于 2013-10-20T17:36:59.013 に答える
0

次のように、コードをDRYに改善できます。

float multiplier;

switch(shippingInput)
{
    case 1: multiplier = 3; break;
    case 2: multiplier = 4; break;
    default: multiplier = 5.5;
}

double shippingAmount = shippingDetails * multiplier;
于 2013-10-20T18:54:13.223 に答える
0

shippingAmountif/else スコープ外で宣言する必要があります。

double shippingAmount = 0;

if (shippingInput == 1)
{
    shippingAmount = shippingDetails * 3;
}
else if (shippingInput == 2)
{
    shippingAmount = shippingDetails * 4;
}
else
{
    shippingAmount = shippingDetails * 5.5;
}
于 2013-10-20T17:36:08.283 に答える