【问题标题】:C# if statement comparing NumbersC# if 语句比较数字
【发布时间】:2017-10-26 13:54:14
【问题描述】:

我真的是编程新手,必须编写一个小程序来测试一个数字是小于还是大于 500、2000 和 5000。现在我写了这个,但它总是采用第一个 else 语句,即使数字是大于 5000 它说数字小于 500。有人知道为什么吗?感谢我得到的每一个帮助。 :)

代码如下:

double rebe, fuenfh = 500.00, zweit = 2000.00, fuenft = 5000.00;
    //zweiPro = 2.00, fuenfPro = 5.00, zehnPro = 10.00;

Console.WriteLine("How big is the number? Wie groß war Ihr Rechnungsbetrag? ");
rebe = Console.Read();

if (rebe >= fuenfh)
{
    if (rebe >= zweit)
    {
        if (rebe >= fuenft)
        {
            Console.WriteLine("bigger or same as 5000");
            Console.ReadLine();
            Console.Read();
        }

        else
        {
            Console.WriteLine("bigger or same as 2000 but smaller than 5000 // Groesser gleich als 2000 aber kleiner als 5000");
            Console.ReadLine();
            Console.Read();
        }
    }

    else
    {
        Console.WriteLine("bigger or same as 500 but smaller than 2000 // Groesser gleich 500 aber kleiner als 2000");
        Console.ReadLine();
        Console.Read();
    }
}
else
{
    Console.WriteLine("smaller than 500 // Leider gibt es keinen Rabatt. :(");
    Console.ReadLine();
    Console.Read();
}

【问题讨论】:

  • “如果一个数字小于或大于 500、2000 和 5000” - 这听起来像是 3 个独立(非嵌套)if/elses 对我来说。
  • 使用调试器单步调试您的代码并检查每一步的值。这是微不足道的代码,如果您打算编写程序,则需要学习调试技巧。
  • 另请注意,尽管它会等到您按 Enter 键 - Console.Read 仅返回单个字符作为整数 - 因此,如果您键入 5000 后按 Enter 则 Read 将返回 '5' 作为整数是 53 岁。
  • 确实,今天是学习如何使用调试器的好日子。另外,请认真阅读您的代码:如果您以相同的两条语句结束条件的每个分支,则这两条语句不会有条件地执行,因此不应完全处于条件状态
  • 不要说出你的号码。没有必要为值 500 创建一个变量fuenfh(德语中五百的缩写)。只要这个值绝对不会改变,只需将数字放入您的代码中,否则使用更通用的名称,如“阈值” "。

标签: c# if-statement numbers comparison


【解决方案1】:

将您的输入从 rebe = Console.Read(); 更改为 rebe = Convert.ToDouble( Console.ReadLine());。我认为您没有获得预期的价值。

【讨论】:

    【解决方案2】:

    这就是它的工作方式,将输入转换为双精度(如 mnield 所暗示的那样),而且总体上使代码更具可读性。请注意,当您反转条件时,代码会缩短多少。

    Console.WriteLine("How big is the number?");
    double amount = Convert.ToDouble(Console.Readline());
    
    if (amount < 500.0)
    {
        Console.WriteLine("smaller than 500");
    }
    else if (amount < 2000.0)
    {
        Console.WriteLine("bigger or same as 500 but smaller than 2000");
    }
    else if (amount < 5000.0)
    {
        Console.WriteLine("bigger or same as 2000 but smaller than 5000");
    }
    else
    {
        Console.WriteLine("bigger or same as 5000");
    }
    
    Console.ReadLine();
    

    【讨论】:

      【解决方案3】:
        double fuenfh = 500.00, zweit = 2000.00, fuenft = 5000.00;
                  //zweiPro = 2.00, fuenfPro = 5.00, zehnPro = 10.00;
                  do
                  {
                      Console.WriteLine("\nWie groß war Ihr Rechnungsbetrag? ");
                      var eingabe = double.TryParse(Console.ReadLine(), out var rebe);
                      if (eingabe)
                      {
                          if (rebe >= fuenft) { Console.Write($"Die eingabe ist größer oder gleich {fuenft}"); }
                          else if (rebe >= zweit) { Console.Write($"Die eingabe ist größer oder gleich {zweit} aber kleiner als {fuenfh}"); }
                          else if (rebe >= fuenfh) { Console.Write($"Die eingabe ist größer oder gleich {fuenfh} aber kleiner als {zweit}"); }
                          else { Console.Write($"Die eingabe ist kleiner als {fuenfh}"); }
                      }
                      else { Console.WriteLine("Bitte Zahl eingeben!"); }
                  } while (true);
      

      这样你就可以在循环中获得完整的功能!

      double.TryParse - 将您的输入转换为双精度类型 if (eingabe) - 如果输入数字,它会将您的变量发送到 if 块中 do {} while (true) - 无限循环来测试您的功能,而无需一直点击调试

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-07-17
        • 1970-01-01
        • 1970-01-01
        • 2018-10-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多