【问题标题】:else if statement in java returning syntax errorjava中的else if语句返回语法错误
【发布时间】:2014-09-16 21:29:54
【问题描述】:

每当我尝试使用 else 语句时,Eclipse 都会突出显示该行并说“else”是语法错误并将其删除。我的代码是这样的

import java.util.Scanner;

public class P4 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
double grossSalary, interestIncome, capitalGains, totalIncome, adjustedIncome, totalTax, stateTax;
int exemptions;
Scanner input = new Scanner(System.in);

System.out.print("Gross Salary: ");
grossSalary = input.nextDouble();

System.out.print("Number of Exemptions: ");
exemptions = input.nextInt();

System.out.print("Interest Income: ");
interestIncome = input.nextDouble();

System.out.print("Capital Gains: ");
capitalGains = input.nextDouble();

totalIncome = grossSalary + interestIncome + capitalGains;
adjustedIncome = totalIncome - (exemptions * 1800.0);

if ((adjustedIncome >= 0.0 && adjustedIncome < 10000.0));
        stateTax = adjustedIncome * .06;
        totalTax = 0.0 + stateTax;

        else if (adjustedIncome >= 10000.0 && adjustedIncome < 25000.0);
            stateTax = adjustedIncome * .06;
            totalTax = (adjustedIncome * .15) + stateTax;

            else if (adjustedIncome >= 25000.0 && adjustedIncome < 36000);
                stateTax = adjustedIncome * .06;
                totalTax = (adjustedIncome * .25) + stateTax;

                else (adjustedIncome >= 36000.0);
                    stateTax = adjustedIncome * .06;
                    totalTax = (adjustedIncome * .28) + stateTax;


System.out.printf("Total Income: $ %.2f", totalIncome);
System.out.println();
System.out.printf("Adjusted Income: $ %.2f", adjustedIncome);
System.out.println();
System.out.printf("Total Tax: $ %.2f", totalTax);
System.out.println();
System.out.printf("State Tax: $ %.2f", stateTax);
    }

}

else if 语句也作为错误返回。我不明白这些语句有什么问题,因为即使我尝试在 if 之后直接放一个 else,它仍然说存在语法错误。

【问题讨论】:

    标签: java if-statement syntax


    【解决方案1】:

    else 不能使用条件:

    ...
    else (condition) {
    ...
    }
    

    会给你编译错误。另一个问题是您在每个 ifelse if 之后放置分号,而您应该使用大括号 {}

    【讨论】:

      【解决方案2】:

      去掉分号并使用大括号

      if ((adjustedIncome >= 0.0 && adjustedIncome < 10000.0)) {
              stateTax = adjustedIncome * .06;
              totalTax = 0.0 + stateTax;
      }  ...
      

      【讨论】:

        【解决方案3】:

        去掉分号:

        if ((adjustedIncome >= 0.0 &&adjustedIncome

        并使用花括号正确定义 if 块的范围。

        如果{ ... } 别的 { ... }

        【讨论】:

          【解决方案4】:

          这是因为您立即用 ; 关闭您的 if 条件,从而使 else if 条件无效。

          你想要的是:

          if ((adjustedIncome >= 0.0 && adjustedIncome < 10000.0)){
              stateTax = adjustedIncome * .06;
              totalTax = 0.0 + stateTax;
          }
          else if (adjustedIncome >= 10000.0 && adjustedIncome < 25000.0){
              stateTax = adjustedIncome * .06;
              totalTax = (adjustedIncome * .15) + stateTax;
          }
          else if (adjustedIncome >= 25000.0 && adjustedIncome < 36000){
               stateTax = adjustedIncome * .06;
               totalTax = (adjustedIncome * .25) + stateTax;
          }
          

          【讨论】:

            【解决方案5】:

            两件事:

            1. 不要在ifelse ifelse 条件的条件之后放置分号。这个分号将充当if 的块,什么都不做,它后面的语句总是会被执行。
            2. 在要应用于ifelse ifelse 的代码部分周围放置大括号。没有它们,即使没有上面(1)中删除的分号,也只有第一条语句将被视为应用于条件的块。

              if ((adjustedIncome >= 0.0 &&adjustedIncome = 10000.0 &&adjustedIncome

            另外,else 块没有条件。

            }
            else
            {
            

            【讨论】:

              【解决方案6】:

              IF 和 IF ELSE 的范围需要用括号来分隔

              import java.util.Scanner;
              
              public class P4 {
              
                  public static void main(String[] args) {
                      // TODO Auto-generated method stub
                      double grossSalary, interestIncome, capitalGains, totalIncome, adjustedIncome, totalTax, stateTax;
                      int exemptions;
                      Scanner input = new Scanner(System.in);
              
                      System.out.print("Gross Salary: ");
                      grossSalary = input.nextDouble();
              
                      System.out.print("Number of Exemptions: ");
                      exemptions = input.nextInt();
              
                      System.out.print("Interest Income: ");
                      interestIncome = input.nextDouble();
              
                      System.out.print("Capital Gains: ");
                      capitalGains = input.nextDouble();
              
                      totalIncome = grossSalary + interestIncome + capitalGains;
                      adjustedIncome = totalIncome - (exemptions * 1800.0);
              
                      if ((adjustedIncome >= 0.0 && adjustedIncome < 10000.0)) {
                          stateTax = adjustedIncome * .06;
                          totalTax = 0.0 + stateTax;
                      } else if (adjustedIncome >= 10000.0 && adjustedIncome < 25000.0) {
                          stateTax = adjustedIncome * .06;
                          totalTax = (adjustedIncome * .15) + stateTax;
                      } else if (adjustedIncome >= 25000.0 && adjustedIncome < 36000) {
                          stateTax = adjustedIncome * .06;
                          totalTax = (adjustedIncome * .25) + stateTax;
                      } else if (adjustedIncome >= 36000.0) {
                          stateTax = adjustedIncome * .06;
                          totalTax = (adjustedIncome * .28) + stateTax;
                      }
                      System.out.printf("Total Income: $ %.2f", totalIncome);
                      System.out.println();
                      System.out.printf("Adjusted Income: $ %.2f", adjustedIncome);
                      System.out.println();
                      System.out.printf("Total Tax: $ %.2f", totalTax);
                      System.out.println();
                      System.out.printf("State Tax: $ %.2f", stateTax);
                  }
              
              }
              

              【讨论】:

                【解决方案7】:

                在 if 语句之后,有几种方法可以执行 then 代码。

                • 多个代码行包含在{}
                • 第一行代码执行完毕,以;结束

                在您的代码中,通过使用if ((adjustedIncome &gt;= 0.0 &amp;&amp; adjustedIncome &lt; 10000.0));,分号充当执行代码的第一行(即使); 之间没有任何内容),这就是条件语句的结尾。

                接下来,有两行代码执行没有问题,然后发现else并导致错误。

                stateTax = adjustedIncome * .06;
                totalTax = 0.0 + stateTax;
                
                else if (adjustedIncome >= 10000.0 && adjustedIncome < 25000.0);
                

                为了使用 else,if 语句后面必须跟 {} 或者什么都没有。

                • 如果(条件) 否则 {

                  }

                • 如果(条件){

                  }其他{

                  }

                实际上,您在这里寻找的是后者,因为您有多行代码要执行,这需要在 if 语句中使用 {}

                if ((adjustedIncome >= 0.0 && adjustedIncome < 10000.0)){
                    stateTax = adjustedIncome * .06;
                    totalTax = 0.0 + stateTax;
                }else if (adjustedIncome >= 10000.0 && adjustedIncome < 25000.0){
                    stateTax = adjustedIncome * .06;
                    totalTax = (adjustedIncome * .15) + stateTax;
                }else if (adjustedIncome >= 25000.0 && adjustedIncome < 36000){
                    stateTax = adjustedIncome * .06;
                    totalTax = (adjustedIncome * .25) + stateTax;
                }else if (adjustedIncome >= 36000.0){
                    stateTax = adjustedIncome * .06;
                    totalTax = (adjustedIncome * .28) + stateTax;
                }
                

                请注意,else 的工作方式与if() 类似,因此当else 后面没有任何内容时,将执行第一行代码,即if(){} 代码块。 else 也可能是这样的

                }else{
                    if (adjustedIncome >= 36000.0){
                        stateTax = adjustedIncome * .06;
                        totalTax = (adjustedIncome * .28) + stateTax;
                    }
                }
                

                【讨论】:

                  最近更新 更多