运算符 * 不能应用于 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
是非法的,因为 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;
另请注意从 double half = 1 / 2;
到 double half = 1d / 2d;
的变化
(根据 OP 的评论进行编辑)您需要使用 d
的 "type suffix" 来指定您的文字(字符 1
和 2
)是 "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);
然后在你的算法中使用这些变量
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
是非法的,因为 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;
另请注意从 double half = 1 / 2;
到 double half = 1d / 2d;
(根据 OP 的评论进行编辑)您需要使用 d
的 "type suffix" 来指定您的文字(字符 1
和 2
)是 "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);
然后在你的算法中使用这些变量