无法应用于java.lang.double

无法应用于java.lang.double,java,android,class,methods,Java,Android,Class,Methods,我正在制作一个应用程序来计算你付了多少税。 用户输入工资,代码计算出来并返回值。 我在使用不同类别的方法(如tax)时遇到困难。该错误发生在tax1=新taxsalaryAmount上;线 出现一条红线,表示“不能应用于双精度” 任何帮助都将不胜感激 public void convert() { EditText salaryAmountEditText = (EditText) findViewById(R.id.salaryAmountEditText); double s

我正在制作一个应用程序来计算你付了多少税。 用户输入工资,代码计算出来并返回值。 我在使用不同类别的方法(如tax)时遇到困难。该错误发生在tax1=新taxsalaryAmount上;线 出现一条红线,表示“不能应用于双精度”

任何帮助都将不胜感激

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 ;

} 
您的类tax没有接受double作为输入参数的构造函数,即

public tax(Double tax){}

此外,您还打破了Java惯例,将类的名称全部用小写字母表示,方法的名称用大写字母表示。方法使用camelCase,所有类的起始字母都使用大写。

看起来您混淆了类和其中包含的方法

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

因此,您的代码如下所示:

税种1=新税种; 双重计算税=税1.税收收入额


另一方面,惯例是将类名和camelCase方法名大写。这将使您的类看起来像公共类Tax,并且您的方法签名public double Tax double salarymount

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

换句话说,你需要这个

tax t = new tax();
double tax1 = t.Tax(salaryAmount);
不过,另一种选择是,可以使用静态方法。另外,您甚至不需要单独的类,因为您可以将该方法移动到您的活动中

public class tax {

    public static double Tax(double money) {
要计算它,你可以用这个

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

由于您的方法返回一个double,它不是tax类的实例,因此您可以执行减法

它指出了什么不能应用于double,请检查错误消息的这一部分,您是否缺少tax构造函数?您正在使用tax,方法名称大小写相同sensitive@Stultuske它说,税收中的税收不能适用于双重征税。干杯一旦编译完成,它仍然会在salaryAmountEditText.toString崩溃,因为您缺少GetText感谢您的回复。我承认我是个初学者,也会犯错误。我更改了类,使其看起来像这样:公共类taxdouble tax{},如您所做的,整个类都有一条红线,上面写着:“需要类”或“接口”。@math removeclass@cricket_007的答案要详细得多,用他的!这就解决了!非常感谢你,非常清楚的解释!
double tax1 = tax.Tax(salaryAmount);
double pocketAmount = salaryAmount - tax1 ;