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”和“附加费”在当前上下文中不存在。

谢谢你的帮助!我还不能标记答案,但是在 if/else 括号之外声明语句并从每个语句中删除 double 之后,它工作得很好。

4

6 回答 6

3

你每次都在制造新的变量。像这样声明一次:

double shippingAmount;

if (shippingInput == 1)
{
    shippingAmount = shippingDetails * 3;
}
else if (shippingInput == 2)
{
    shippingAmount = shippingDetails * 4;
}
else
{
    shippingAmount = shippingDetails * 5.5;
}
于 2013-10-20T17:35:50.657 回答
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 回答
1

在语句之前声明您的变量,并使用默认值(来自else您的逻辑的一部分):

double shippingAmount = shippingDetails * 5.5;
if (shippingInput == 1)
{
    shippingAmount = shippingDetails * 3;
}
else if (shippingInput == 2)
{
    shippingAmount = shippingDetails * 4;
}
于 2013-10-20T17:36:03.463 回答
0

您必须声明shippingAmount超出 if/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 回答
0

这就是你的做法。

var shippingAmount = (shippingInput == 1) ? shippingDetails * 3 :
                     (shippingInput == 2) ? shippingDetails * 4 :
                                            shippingDetails * 5.5;
于 2013-10-20T17:41:47.330 回答
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 回答