不能应用于java.lang.double

时间:2017-11-24 14:01:16

标签: java android class methods

我正在制作一个应用程序来计算您支付的税额 用户输入薪水,代码将运行并输出并返回值 我在使用税收等不同类别的方法时遇到了麻烦。 tax tax1 = new tax(salaryAmount);行发生错误 出现一条红线,并说“不能应用于双倍”。

非常感谢任何帮助。

public void convert() {
    EditText salaryAmountEditText = (EditText) findViewById(R.id.salaryAmountEditText);
    double salaryAmount = Double.parseDouble(salaryAmountEditText.toString());
    TextView textView = (TextView) findViewById(R.id.textView);
    tax tax1 = new tax(salaryAmount);
    Double pocketAmount = salaryAmount - tax1 ;

} 

public class tax {

    public double Tax(double money) {
        Double tax1;
        if (money < 11000) {
            tax1 = 0.0;
        } else if ( 11000 < money && money<45000) {
            tax1 = (money -11000)*0.2;
        } else if(45000 < money && money<150000){
            tax1 = 68000 + ((money - 45000)*0.4);
        } else {
            tax1 = 6800 + 42000 + ( (money - 150000)*0.45 );
        }
        return tax1;
    }

}

3 个答案:

答案 0 :(得分:1)

您定义了一个方法,但是您调用了一个构造函数。为了调用你的方法,你需要一个实例(通过调用构造函数),但构造函数没有返回类型......

换句话说,你需要这个

tax t = new tax();
double tax1 = t.Tax(salaryAmount);

另一种选择是,您可以使用static方法。 (顺便说一句,你甚至不需要一个单独的类,因为你可以将该方法移动到你的Activity中)

public class tax {

    public static double Tax(double money) {

为了计算它,你会像这样使用。

double tax1 = tax.Tax(salaryAmount);
double pocketAmount = salaryAmount - tax1 ;

由于你的方法返回一个double,它不是tax类的实例,所以你可以进行减法

答案 1 :(得分:0)

您的班级tax没有接受double作为输入参数的构造函数(即)

public tax(Double tax){}

此外,您通过使用全部小写的类名来破坏Java约定,并且它的方法是使用大写的方法。使用camelCase代替方法,并使用大写作为所有类的起始字母。

答案 2 :(得分:0)

您的课程及其中包含的方法似乎让您感到困惑。

方法public double Tax(double salaryAmount)不是静态的,因此需要调用对象的实例。

所以你的代码看起来像这样:

tax tax1 = new tax(); double computedTax = tax1.Tax(salaryAmount);

另一方面,约定是大写类名和camelCase方法名。这会使您的课程看起来像public class Tax,方法签名public double tax(double salaryAmount)