“线程中的异常”主“java.lang.Error”

时间:2013-10-21 21:54:17

标签: java eclipse if-statement

我不知道为什么它说我有错误但这是确切的错误消息“线程中的异常”主“java.lang.Error:未解决的编译问题:

at org.com1027.cw1.rc00182.Salary.main(Salary.java:8)"

以下是代码:

package org.com1027.cw1.rc00182;

public class Salary {

/**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub
}   
public double salary; //this is the field I have created within the Salary class with type double 
public Salary() { //this is the default constructor
}

public double getsalary() { //Here is the getter for salary class with a return 
    return salary;
}
public double setsalary() { //Here is setter for the salary class with a return 
    return salary;
}

public int calculateTax()
{
    int salary = 16475; //here I am stating the salary using an integer because it is number related
    int taxSalary = 7035; //here I am declaring the result so I can use it later
    int personalAllowance = 9440; //here I am declaring the personal allowance is equal to 9440
    int taxThreshold = 32010; //this is the tax threshold value I have put in for later use when continuing the if statement 
    int lowerTax = 20; //this is the lower tax and because the value holds a decimal I have used a type double. this will come to use when continuing the if statement calculating the tax 
    int higherTax = 40; //this is the higher tax and again used a type double due to the use of a number holding a decimal
    // above are the 6 variables I have created for the if statement below

    if (salary > personalAllowance){ //here I am saying if the salary is more than 9440 (personal allowance) then..     
        taxSalary = salary-personalAllowance; //this is saying the salary (16475) minus personal allowance gives the result (7035) which is the taxable salary
        taxSalary = 0;
    }

    if (taxSalary < taxThreshold) {
        taxSalary = taxSalary * lowerTax;
    }   
      else {
        taxSalary = (taxSalary - taxThreshold) * higherTax + taxThreshold;
      }

}

还说我在底部的支架上有一个错误,说我需要在那里放另一个但我无法找到它丢失的地方。

2 个答案:

答案 0 :(得分:0)

您的代码包含错误。你强迫编译器编译它。但它不能。所以当你尝试运行它时。它将停止并说编译的Java文件无效。我不打算在代码中搜索你的错误。使用像Eclipse这样的IDE,它会告诉你错误的位置以及问题所在。

答案 1 :(得分:0)

你的setSalary()是不是应该做任何事情,还是有其他代码,你忘了包含它?

一般来说,setter应如下所示,但显然你可以让它返回一个值或一个布尔值:

public void setsalary(double salary) {  // setSalary would have been more readable
    this.salary = salary;
}
编辑:正如其他人指出的那样,你缺少一个班级支架。我已经为它提供了一个可能的位置。

     else {
       taxSalary = (taxSalary - taxThreshold) * higherTax + taxThreshold;
     }

     return taxSalary;  // <--- missing a return statement here
  }

} //&lt; ---在这里缺少一个课程结束括号。