我正在尝试使用
解决问题令牌“}”上的语法错误,{预期。
该计划应该能够计算输入金额的税。
import javax.swing.JOptionPane;
public class Accounting {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//declare variables
int accountNumber;
int age=0;
int months=0;
double amount=0.0;
double increasedAmount=0.0;
double incomeTax=0.0;
double newAmount=0.0;
char letter;
double rate=0.03;
double interest=0.0;
double tax=0.40;
double income=0.0;
//get input
accountNumber=Integer.parseInt(JOptionPane.showInputDialog(null, "Please enter the account number (Type 999 to exit "));
age=Integer.parseInt(JOptionPane.showInputDialog(null, "Enter the age "));
amount=Double.parseDouble(JOptionPane.showInputDialog(null, "Enter the amount "));
months=Integer.parseInt(JOptionPane.showInputDialog(null, "Enter the number of months "));
letter=(JOptionPane.showInputDialog(null, "--- --- Main Menu --- --- --- " +
"\n A. Seniors Account " + "\n B. Income Tax " + "\n C. Special Accounts " +
"\n Please select a letter from the menu ( Type X to exit the Menu)")).charAt(0);
//call function
interest=amount*rate*months;
income=amount*tax;
increasedAmount=calcSenior(amount, interest);
incomeTax=calcTax(amount, income );
//display results
JOptionPane.showMessageDialog(null, "The increased amount is " + increasedAmount);
JOptionPane.showMessageDialog(null, "The income tax is " + incomeTax);}
public static void displayHeading()
{
JOptionPane.showMessageDialog(null, "############################# ");
JOptionPane.showMessageDialog(null, "Als Accounting Services ");
JOptionPane.showMessageDialog(null, "Your success is our business. ");
JOptionPane.showMessageDialog(null, "############################# ");
}
// code methods
//case 1:
public static double calcSenior (double amt, double intest)
{
double cost;
cost=amt+intest;
return cost;
}
//case 2:
public static double calcTax(double amot, double inc)
{
double cost1;
cost1=amot+inc;
return cost1;
}
//case 3:
public static void makeDeductions (int age, double amount)
{
double newAmount;
if (age > 40)
{
newAmount=amount-100;
JOptionPane.showMessageDialog(null, "Amount " + amount);
}
else
{
JOptionPane.showMessageDialog(null, "No deductions at this time ");
}
}
} - error
while (accountNumber != 999)
{
Accounting.displayHeading();
switch (accountNumber)
{
case 1:
calcSenior();
break;
case 2:
calcTax();
break;
case 3:
makeDeductions();
break;
default: JOptionPane.showMessageDialog(null, "Bye! Have a nice day ");
}//end switch
}
}
}
答案 0 :(得分:3)
问题是,你的while循环超出了类定义的主体......
public class Accounting {
//...
} // End of class..
while...
这在Java中是非法的。您必须将while循环放在执行上下文中,例如方法或静态初始化块...
答案 1 :(得分:2)
您的代码布局异乎寻常。你的顶部和底部都有一块main
。
这是快速(编译)修复:
删除JOptionPane.showMessageDialog(null, "The income tax is " + incomeTax);}
末尾的大括号。
将while
循环移至该行后面。
修复while
循环中的方法调用,以便他们使用的参数正确无误。
不可否认,这并没有说明你的程序的正确性,只是说它会更接近于编译。
答案 2 :(得分:1)
在makeDeductions (int age, double amount)
方法的最后,你有这个:
}
} - error
第一个}
关闭方法体,并且以下}
关闭了类体,因此在Java中留下了- error
外部类体,非法语法。此外,之后还有一个while
,也是非法的外部方法体(当然还有非法的体外团体)
如果删除这两行(数字100和101,代码复制代码),问题就解决了(虽然- error
可能会做某事,即使我无法弄清楚是什么,所以当小心时要小心删除它)。但还有一个:
makeDeductions (int age, double amount)
方法体的一部分,您现在引用变量accountNumber
,该变量在main(String[] args)
方法中声明,因此在此上下文中不存在< / LI>
calcSenior()
,您声明的唯一一个是calcSenior (double amt, double intest)
(注意这两个参数)calcTax()
相同,您只声明了calcTax(double amot, double inc)
makeDeductions ()
的情况却相同,只声明了makeDeductions (int age, double amount)
。但请注意,请记住,我假设您删除了我在开头指定的那些喜欢,因此此代码位于makeDeductions (int age, double amount)
BODY中,这意味着如果使用int和double参数调用makeDeductions
,则实际上是在调用这个方法,如果你没有停止条件来避免方法无限地调用自身(导致堆栈溢出),这会导致无限循环。这就是我能找到的一切。我希望这对你有用:)
答案 3 :(得分:0)
也许您正在使用Eclipse作为IDE并尝试运行无法编译的代码。检查Eclipse中的Problems视图,并在执行应用程序之前修复编译错误。