【问题标题】:How to fix this in C#: main.cs(18,5): warning CS0642: Possible mistaken empty statement如何在 C# 中解决此问题: main.cs(18,5): 警告 CS0642: 可能错误的空语句
【发布时间】:2019-09-15 22:53:03
【问题描述】:

我正在使用 If-else 语句进行 BMI 计算任务。我收到一个错误

CS1525 意外符号 'else'

和警告

CS0642: 可能是错误的空语句

这是 C# 中的 BMI 计算

bmi = (weight * 703) / height^2;

if (bmi < 18.5);
{
    Console.WriteLine("Underweight"); 

else if (bmi <= 25)
    Console.WriteLine("Optimal"); 

else if (bmi > 25);
    Console.WriteLine("Overweight");
} 

Mono C# 编译器版本 4.6.2.0

mcs -out:main.exe main.cs

main.cs(20,5):警告 CS0642:可能错误的空语句
main.cs(23,6):错误 CS1525:意外符号“else”
main.cs(27,13):警告 CS0642:可能是错误的空语句
编译失败:1 个错误,2 个警告
编译器退出状态 1

【问题讨论】:

  • 使用大括号,你的生活会变得更轻松 :) 顺便说一下,C# 中的 ^ 运算符是 XOR operator 而不是权力。如果您想将数字提高到特定的幂,请使用 Math.Pow
  • 如果 (...); - 是一个空语句。应该读作“如果 [something] 然后做 [nothing]”
  • 你的else if 需要在第一个if 之后,而不是在它里面

标签: c#


【解决方案1】:

我没有 Mono 编译器,但试试这个:

bmi = (weight * 703) / Math.Pow(height,2);

if (bmi < 18.5)
{
  Console.WriteLine("Underweight"); 
}
else if (bmi <= 25)
{
  Console.WriteLine("Optimal");
}
else if (bmi > 25)
{
  Console.WriteLine("Overweight");
}

【讨论】:

    【解决方案2】:

    if 语句前面有一个分号。在像 C 或 C++ 这样的语言中,这意味着 if 语句什么也不做,但 C# 将其视为错误。因为花括号里面的代码不属于if语句,因为分号,else关键字不能在那里。

    编辑

    另外,你的else ifs 应该在合上花括号之后

    【讨论】:

      【解决方案3】:

      能否请您更新如下代码并尝试 -

      bmi = (体重 * 703) / Math.Pow(身高,2);

      如果 (bmi

      否则如果 (bmi

      else if (bmi > 25) Console.WriteLine("超重");

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-31
        • 2012-06-14
        • 2021-11-10
        • 2018-12-02
        相关资源
        最近更新 更多