我正在制作一个应用程序来计算您支付的税额
用户输入薪水,代码将运行并输出并返回值
我在使用税收等不同类别的方法时遇到了麻烦。 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;
}
}
答案 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)