【问题标题】:Simple For loop and if statement简单的 For 循环和 if 语句
【发布时间】:2016-02-13 16:31:56
【问题描述】:

我想要做的是将提款金额限制为 20 美元,最高可达 500 美元。我知道我在这里缺少一些简单的元素来做到这一点。我的代码一直有效,直到我尝试增加 20。

double AccountBalance = 1500;
double WithdrawalAmount;
WithdrawalAmount = double.Parse(textInput.Text);
Double MaxWithdrawalAmount = 0;
for (MaxWithdrawalAmount = 0; MaxWithdrawalAmount <= 500; MaxWithdrawalAmount += 20)
{ 
    if (WithdrawalAmount == MaxWithdrawalAmount)
    {
        double Total = (AccountBalance - WithdrawalAmount);
        textTotal.Text = ("Total amount" + Convert.ToString(Total));
    }
    else
    {
        textError.Text = ("Only Increments of $20 allowed for withdraw up to $100");
        textTotal.Text = ("" + AccountBalance);
    }
}

【问题讨论】:

  • 究竟什么是“不工作”?你能提供一些示例输出吗?
  • 现在有什么问题?
  • 您的 for 语句后似乎缺少范围括号。
  • 它只会显示 1500 并转到 Else 语句
  • @woogy - for 循环语法有效;可维护性可能不太理想,但仍然有效。

标签: c# if-statement for-loop incremental-build


【解决方案1】:

你应该以不同的方式处理你的循环

bool ok = false;
for (MaxWithdrawalAmount = 0; MaxWithdrawalAmount <= 500; MaxWithdrawalAmount += 20)
{
    if (WithdrawalAmount == MaxWithdrawalAmount)
    {
        double Total = (AccountBalance - WithdrawalAmount);
        textTotal.Text = "Total amount" + Convert.ToString(Total);
        ok = true;
        break;
    }
}
if (!ok)
{
    textError.Text = ("Only Increments of $20 allowed for withdraw up to $100");
    textTotal.Text = ("" + AccountBalance);
}

我已将错误消息移到循环之外。如果在循环中我找到了正确的退出值,那么我停止循环并设置一个标志以避免最终的错误消息

旁注,如果您不需要双精度值,则可以使用 remainder operator 将整个代码减少到几行。例如

int WithdrawalAmount = 120;
if ((WithdrawalAmount % 20) == 0)
   ... good ...
else
   ... bad ...

【讨论】:

  • 嗯,我想知道是什么错误,谢谢。
猜你喜欢
  • 1970-01-01
  • 2013-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多