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;
}
}
}
我正在尝试为三角形区域制作一个简单的计算器,但我似乎被困在这里。
答案 0 :(得分: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;
另请注意从double half = 1 / 2;
到double half = 1d / 2d;
(编辑以回应OP的评论)您需要使用"类型后缀" d
指定您的文字(字符1
和2
)为double literals(请参阅" Java教程>的Floating Point Literals部分;原始数据类型"更简单的英文解释)。
如果没有它,它们将被解释为整数文字。具有两个整数变量的算术运算符导致执行整数除法(由于binary numeric promotion将它们都视为整数)。这给出了0
的结果(作为整数)。只有这样才会在widening primitive converstion期间将结果扩展(使用assignment conversion)加倍。
答案 1 :(得分:1)
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);
然后在算术中使用这些变量
答案 2 :(得分:0)
你有* hoogtie和基础是EditText
并且不能成倍增加。
答案 3 :(得分:0)
执行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;
答案 4 :(得分:0)
您正在从EditText
中提取值,但您没有使用此行中正在解析的double
值,例如:
Double.valueOf(tussenBasis);
您尝试使用EditText
本身作为因素,但它不是double
,因此无法与*
运算符一起使用乘以这些值。
将Double.valueOf
的结果分配给新的double
变量,并在计算中使用这些变量。
顺便提一下,1 / 2
在Java中是整数除法,并且将评估为0
。试试1.0/2.0
或只使用0.5
。