如何在Java中解决“令牌上的语法错误”否则“”?

我是新来的,但让我们直接回答这个问题:当我为类项目计算器编写以下代码时,我遇到了“令牌错误”。 这是完整的错误消息:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: Syntax error on token "else", delete this token at calculatorApplet.main(calculatorApplet.java:42) 

我写了这段代码:

 import java.util.Scanner; import javax.swing.JOptionPane; public class calculatorApplet { Scanner sc = new Scanner(System.in); public static void main(String[] args) { JOptionPane.showMessageDialog(null, "Welcome to the Calculator!"); String option = JOptionPane.showInputDialog(null, "Which calculator mode do you want?"); if (option.equals("Addition")) { Double add1 = Double.parseDouble(JOptionPane.showInputDialog(null, "Okay type the first number(s) of your addition problem.")); Double add2 = Double.parseDouble(JOptionPane.showInputDialog(null, "Now type the second number(s) of your addition problem.")); Double preAdd = add1+add2; Double Add = preAdd; JOptionPane.showMessageDialog(null, "The sum is " + Add + "."); } else { JOptionPane.showMessageDialog(null, "Huh?"); } if (option.equals("Subtraction")) { Double sub1 = Double.parseDouble(JOptionPane.showInputDialog(null, "Okay type the first number(s) of your subtraction problem.")); Double sub2 = Double.parseDouble(JOptionPane.showInputDialog(null, "Now type the second number(s) of your subtraction problem.")); Double preSub = sub1-sub2; Double Sub = preSub; JOptionPane.showMessageDialog(null, "The difference is " + Sub + "."); } else { JOptionPane.showMessageDialog(null, "Huh?"); } if (option.equals("Multiplication")); { Double mult1 = Double.parseDouble(JOptionPane.showInputDialog(null, "Okay type the first number(s) of your multiplication problem.")); Double mult2 = Double.parseDouble(JOptionPane.showInputDialog(null, "Now type the second number(s) of your multiplication problem.")); Double preMult = mult1*mult2; Double Mult = preMult; JOptionPane.showMessageDialog(null, "The product is " + Mult + "."); } else //Here is the error. { JOptionPane.showMessageDialog(null, "Huh?"); } //Here ends the error. if (option.equals("Division")) { Double div1 = Double.parseDouble(JOptionPane.showInputDialog(null, "Okay type the first number(s) of your division problem.")); Double div2 = Double.parseDouble(JOptionPane.showInputDialog(null, "Now type the second number(s) of your division problem.")); Double preDiv = div1/div2; Double Div = preDiv; JOptionPane.showMessageDialog(null, "The quotient is " + Div + "."); } else { JOptionPane.showMessageDialog(null, "Huh?"); } //End of if statements. } } 

这是代码,我评论了令牌错误的区域。 也许解决方案就在我面前。 我希望我的代码成为一个计算器,所以如果你们可以修复我的代码而不与数学运算冲突。 谢谢,我感谢任何帮助。

问题是if之后的分号。

语法是if ( condition ) expression-or-block { else expression-or-block }

自从; 是一个空表达式,这适用于if子句,并且在then子句中没有任何反应 – 在你的情况下,语法上没有else子句,因为你的if语句语句以分号结尾,后跟一个简单的块。 然后,标记器检测到悬空的else标记并进行投诉。

删除; 从这里的行结束:

if (option.equals("Multiplication"));

在错误发生之前的If语句末尾有一个分号。

 if (option.equals("Multiplication")); 

更改

 if (option.equals("Multiplication")); 

 if (option.equals("Multiplication")) 

没有分号

删除语句末尾的分号(;) if (option.equals("Multiplication"));

更改:

 if (option.equals("Multiplication")) 

不需要; 在条件结束时

如果(option.equals( “乘法”))

从if语句中删除分号

 if (option.equals("Multiplication")); 

应该

 if (option.equals("Multiplication"))