如何解决Java中的“Syntax error on token 'else'”错误?

3

我是一名新手,但我们直接进入问题:

当我为一个班级项目计算器编写以下代码时,我遇到了一个“令牌错误”。这是完整的错误消息:

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.
    } 

}

这是代码,我在标记令牌错误的区域进行了注释。也许解决方案就在我的面前。我希望我的代码可以成为一个计算器,所以如果你们能修复我的代码,使其不与数学运算冲突,那就谢谢了,我非常感激任何帮助。

8个回答

19

在这里删除行末的;

if (option.equals("Multiplication"))


15
问题在于if后面的分号。
语法是if (条件) 表达式或代码块{else 表达式或代码块}
因为;是空表达式,所以它适用于if从句并且then从句中什么也不会发生 - 在您的情况下,由于if语句以分号结尾并且紧随一个简单的块,因此在语法上没有else从句。然后标记器检测到一个悬挂的else令牌并抱怨。

7
您在错误发生的地方的 If 语句末尾有一个分号。
if (option.equals("Multiplication"));

3

改变

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

to

if (option.equals("Multiplication"))

没有分号


1

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


0

更改:

if (option.equals("Multiplication"))

0

if条件语句结尾不需要加分号

if(option.equals("Multiplication"))


-1

从 if 语句中移除分号

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

应该是

if (option.equals("Multiplication"))

4
欢迎来到Stack Overflow!回答问题时,请花些时间阅读之前提供的答案。在这种情况下,我们已经收到了多个回答,已经给出了答案。请问自己,“我的回答是否有益于社区?” - Christopher Moore

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接