每当我尝试使用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,它仍然说是语法错误。
答案 0 :(得分:3)
您不能将条件与else
:
...
else (condition) {
...
}
会给你编译错误。另一个问题是你应该在每个if
或else 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)
两件事:
if
或else if
或else
条件满足后,请不要使用分号。这个分号将作为if
的块,不执行任何操作,并且后面的语句将始终执行。在要应用于if
,else if
或else
的代码部分周围放置大括号。没有它们,即使没有上面(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) { //等等
此外,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;
}
请注意,else
与if()
的工作方式类似,因此当else
后面没有任何内容执行第一个代码行,即if(){}
代码块。其他也可能看起来像这样
}else{
if (adjustedIncome >= 36000.0){
stateTax = adjustedIncome * .06;
totalTax = (adjustedIncome * .28) + stateTax;
}
}