我是新来的,但让我们直接进入问题:当我为一个类项目计算器编写以下代码时,我遇到了一个"标记错误"。这是完整的错误消息:
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 (option.equals("Multiplication"));
问题是if
后面的分号。
语法为if
(
条件)
表达式或块{else
表达或块}
由于;
是一个空表达式,这适用于if子句,而then子句中什么都不发生——在您的情况下,语法上没有else子句,因为if语句以分号结尾,后面跟着一个简单的块。然后,令牌化器检测到一个悬挂的else
令牌并进行投诉。
在发生错误的If语句前面的末尾有一个分号。
if (option.equals("Multiplication"));
更改
if (option.equals("Multiplication"));
至
if (option.equals("Multiplication"))
不带分号
删除语句if (option.equals("Multiplication"));
末尾的分号(;)
更改:
if (option.equals("Multiplication"))
不需要;在if条件结束时
if(option.equals("Multiplication")
从if语句中删除分号
if (option.equals("Multiplication"));
应该是
if (option.equals("Multiplication"))