运算符 * 不能应用于 double

Operator * cannot be applied to double

public void onClick(View v){
    switch(v.getId()){
        case R.id.bereken:

           EditText basis = (EditText)findViewById(R.id.Basis);
              String tussenBasis = basis.getText().toString();
                Double.valueOf(tussenBasis);
            //

            EditText hoogte = (EditText)findViewById(R.id.Hoogte);
              String tussenHoogte = hoogte.getText().toString();
                Double.valueOf(tussenHoogte);

            double half = 1 / 2;
            //half = 0,5

            double einde = half * basis * hoogte;
            //eind antwoord formule

            ((TextView)findViewById(R.id.antwoord)).setText("Het antwoord is: " + einde);
            break;
    }

     }
}

我正在尝试制作一个简单的三角形面积计算器,但我似乎被困在这里。

half * basis 是非法的,因为 basisEditText 类型(hoogte 也是)您要将 half 乘以什么?也许您需要将 Double.valueOf(tussenBasis)Double.valueOf(tussenHoogte) 的结果分配给 double 变量并在乘法中使用它?

EditText basis = (EditText)findViewById(R.id.Basis);
String tussenBasis = basis.getText().toString();
double basisDouble = Double.valueOf(tussenBasis);
//

EditText hoogte = (EditText)findViewById(R.id.Hoogte);
String tussenHoogte = hoogte.getText().toString();
double hoogteDouble = Double.valueOf(tussenHoogte);

double half = 1d / 2d;
//half = 0,5

double einde = half * basisDouble * hoogteDouble;

另请注意从 double half = 1 / 2;double half = 1d / 2d;

的变化

(根据 OP 的评论进行编辑)您需要使用 d 的 "type suffix" 来指定您的文字(字符 12)是 "The Java Tutorials > Primitive Data Types" 的 double literals (see the Floating Point Literals 部分以获得更通俗的英语解释)。

如果没有这个,它们将被解释为整数文字。具有两个整数变量的算术运算符导致执行整数除法(由于 binary numeric promotion treating them both as integers). That gives the result (as an integer number) of 0. Only then is the result widened (using widening primitive converstion) to a double during the assignment conversion.

你有 * hoogtie 和 basis 是 EditText 并且不能相乘。

当您执行 Double.valueOf 时,您需要将结果分配给某物。就这样吧。

EditText basis = (EditText)findViewById(R.id.Basis);
String tussenBasis = basis.getText().toString();
double basisValue = Double.valueOf(tussenBasis);

hoogte 类似。然后你可以写

double einde = half * basisValue * hoogteValue;

您正在从 EditText 中提取值,但您没有使用您在该行中解析的 double 值,例如:

Double.valueOf(tussenBasis);

您正在尝试使用 EditText 本身作为因数,但它不是 double,因此不能与 * 运算符一起使用来乘以值.

Double.valueOf 的结果分配给新的 double 变量,并在您的计算中使用这些变量。

顺便说一句,1 / 2 是 Java 中的整数除法,计算结果为 0。尝试 1.0/2.0 或只使用 0.5.

EditText basis = (EditText)findViewById(R.id.Basis);

不是可以在算术中使用的值。相同于:

EditText hoogte = (EditText)findViewById(R.id.Hoogte);

您正在尝试在此处使用它们double einde = half * basis * hoogte;

做不到。

我很确定你需要的是将这些值保存到一个变量中

Double.valueOf(tussenHoogte);
Double.valueOf(tussenBasis);

然后在你的算法中使用这些变量