首页 > 解决方案 > 如何在没有if的情况下修复java错误

问题描述

我正在制作一个 bmi 计算器,但我无法做出正确的 if else 语句。我不明白 else if 部分的错误。它表示没有“if”的错误“else”。if-else 语句的正确结束是什么。

  if (choices == ('e' || 'E'))
    System.out.print("ENTER YOUR WEIGHT IN POUNDS(lb): ");
    weighte = input.nextDouble();
    System.print.out("ENTER YOUR HEIGHT IN FEET(ft): ");
    heighte = input.nextDouble();

    bmi = (weighte / (heighte * heighte));
   else if (choices == ('m' || 'M'));
    System.out.print("ENTER YOUR WEIGHT IN KILOGRAMS(kg): ");
    weightm = input.nextDouble();
    System.out.print("ENTER YOUR HEIGHT IN CENTIMETERS(cm): ");
    heightm = input.nextDouble();
    bmi = (weightm / (heightm * heightm));

System.out.print("YOUR BMI IS " + bmi);

标签: java

解决方案


如果您在没有 {} 的情况下编写它:

if (choices == ('e' || 'E'))
    System.out.print("ENTER YOUR WEIGHT IN POUNDS(lb): "); // <-- if statement ends here
    weighte = input.nextDouble(); // <-- runs unconditionally
//...
else if (choices == ('m' || 'M')); // <-- if ends with ;

所以,只需使用括号

if(condition){
// ...
} else if(condition) {
// ...
}

另请参阅Java 教程: if-else

此外,如果“then”子句仅包含一个语句,则左大括号和右大括号是可选的:

(我强调)


这段代码还有更多问题,我认为部分原因是从更大的代码块中提取了一个片段。但我认为这是这里的“主要”问题。

编辑:最后一件事......

如果 "e" 和 "m" 是唯一可能的两个选择,那么只需踢出第二个 if 和条件。如果它不是“e”,那么它必须是“m”。照原样,理论上有可能它既不是“e”也不是“m”,它bmi没有设置(或设置为默认值)。


推荐阅读