运算符*不能应用于double

Mal*_*lum 0 java android multiplying operator-keyword

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;
    }

     }
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试为三角形区域制作一个简单的计算器,但我似乎被困在这里.

And*_*own 5

half * basis是非法basis的类型EditText(等等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;
Run Code Online (Sandbox Code Playgroud)

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

(编辑以响应来自OP的注释)您需要使用"类型后缀" d来指定您的文字(字符12)是双重文字(请参阅"Java教程>原始数据类型" 的浮点文字部分,一个更简单的英文解释).

没有它,它们被解释为整数文字.具有两个整数变量的算术运算符导致执行整数除法(由于二进制数字提升将它们都视为整数).这给出了结果(作为整数)0.只有这样才能在赋值转换期间将结果扩展(使用加宽基元转换)为double .