else if语句在java中返回语法错误

时间:2014-09-16 21:29:55

标签: java if-statement syntax

每当我尝试使用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,它仍然说是语法错误。

7 个答案:

答案 0 :(得分:3)

您不能将条件与else

一起使用
...
else (condition) {
...
}

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

答案 1 :(得分:1)

删除分号并使用大括号

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

答案 2 :(得分:0)

摆脱分号:

if((adjustIncome&gt; = 0.0&amp;&amp; adjustedIncome&lt; 10000.0));

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

如果{ ... } else { ... }

答案 3 :(得分:0)

这是因为您立即使用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;
}

答案 4 :(得分:0)

两件事:

  1. ifelse ifelse条件满足后,请不要使用分号。这个分号将作为if的块,不执行任何操作,并且后面的语句将始终执行。
  2. 在要应用于ifelse ifelse的代码部分周围放置大括号。没有它们,即使没有上面(1)中删除的分号,也只会将第一个语句作为应用于条件的块。

    if((adjustIncome&gt; = 0.0&amp;&amp; adjustedIncome&lt; 10000.0)) {     stateTax = adjustedIncome * .06;     totalTax = 0.0 + stateTax; } 否则如果(adjustIncome&gt; = 10000.0&amp;&amp; adjustedIncome&lt; 25000.0) {     //等等

  3. 此外,else块没有条件。

    }
    else
    {
    

答案 5 :(得分:0)

您需要使用括号来区分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);
    }

}

答案 6 :(得分:0)

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

  • 多个代码行包含在{}
  • 执行第一行代码,由;
  • 终止

在您的代码中,使用if ((adjustedIncome >= 0.0 && adjustedIncome < 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;
}

请注意,elseif()的工作方式类似,因此当else后面没有任何内容执行第一个代码行,即if(){}代码块。其他也可能看起来像这样

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