How to resolve “Syntax error on token ”else“” in Java?

人走茶凉 提交于 2020-01-10 02:15:06

问题


I am new around here but let's get straight to the question: When I was writing the following code for a class project calculator I came across a "token error". This is the full error message:

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

at calculatorApplet.main(calculatorApplet.java:42)

I wrote this code:

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

}

That's the code and I commented the area where the token error is. Maybe the solution is right in my face. I want my code to be a calculator so if you guys can fix my code to not conflict with the math operations. Thanks and I appreciate any help.


回答1:


The problem is the semicolon after the if.

The grammar is if ( condition ) expression-or-block { else expression-or-block }

Since ; is an empty expression, this works for an if clause and nothing happens in the then clause - in your case syntactically there is no else clause, since your if statement statements ends with the semicolon and is followed by a simple block. Then the tokenizer detects a dangling else token and complains.




回答2:


Remove the ; from the line end here:

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




回答3:


You have a semi-colon at the end of the If statement preceding where the error is occuring.

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



回答4:


Change

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

to

if (option.equals("Multiplication"))

without the semicolon




回答5:


remove semicolon ( ;) at the end of the statement if (option.equals("Multiplication"));




回答6:


Change:

if (option.equals("Multiplication"))



回答7:


Need no ; at the end of if condition

if(option.equals("Multiplication"))




回答8:


remove the semicolon from the if statement

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

should be

if (option.equals("Multiplication"))


来源:https://stackoverflow.com/questions/17833861/how-to-resolve-syntax-error-on-token-else-in-java

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!