自从我上次询问这里的任何东西以来已经有一段时间了! 我在做一个Android应用程序,因此,运行时,该代码:Java计算返回无穷大
Button calc = (Button) findViewById(R.id.btnCalculate);
calc.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v) {
EditText number1 = (EditText) findViewById(R.id.dnp);
EditText number2 = (EditText) findViewById(R.id.ponte);
EditText number3 = (EditText) findViewById(R.id.aro);
EditText number4 = (EditText) findViewById(R.id.ed);
EditText number5 = (EditText) findViewById(R.id.esf);
EditText number6 = (EditText) findViewById(R.id.curvint);
EditText number7 = (EditText) findViewById(R.id.curvb);
EditText number8 = (EditText) findViewById(R.id.ind);
EditText number9 = (EditText) findViewById(R.id.espmin);
TextView display = (TextView) findViewById(R.id.display);
double dnp = Double.parseDouble(number1.getText().toString());
double ponte = Double.parseDouble(number2.getText().toString());
double aro = Double.parseDouble(number3.getText().toString());
double ed = Double.parseDouble(number4.getText().toString());
double esf = Double.parseDouble(number5.getText().toString());
double curvint = Double.parseDouble(number6.getText().toString());
double curvb = Double.parseDouble(number7.getText().toString());
double ind = Double.parseDouble(number8.getText().toString());
double espmin = Double.parseDouble(number9.getText().toString());
double R1;
double R2;
double DT; //Decentração total
double DM; //Decentração monocular
double diametro;
double S1;
double S2;
double espessurafinal;
if (esf < 0)
{
R1 = (ind - 1/curvb) * 1000;
R2 = (ind - 1/curvint) * 1000;
DT = (aro+ponte)-dnp;
DM = (DT/2);
diametro = (ed + 2 * DM)/2;
S1 = R1 - (Math.sqrt(Math.exp(R1)-Math.exp(diametro)));
S2 = R2 - (Math.sqrt(Math.exp(R2)-Math.exp(diametro)));
espessurafinal = (S1 - S2) + espmin;
display.setText(espessurafinal + "" + "\nMilímetros");
}
else {
R1 = (ind - 1/curvb) * 1000;
R2 = (ind - 1/curvint) * 1000;
DT = (aro+ponte)-dnp;
DM = (DT/2);
diametro = (ed + 2 * DM)/2;
S1 = R1 - (Math.sqrt(Math.exp(R1)-Math.exp(diametro)));
S2 = R2 - (Math.sqrt(Math.exp(R2)-Math.exp(diametro)));
espessurafinal = espmin - (S1 + S2);
display.setText(espessurafinal + "\nMilímetros");
}
}
});
我可能失去了一些东西很琐碎这里,我的编码技能 非常有限有这个问题,但是这个代码片段当我按下计算按钮时返回“Infinity”。现在,我之前收到NaN,并设法摆脱它,但只是看到它变得无限!我研究发现,这是由于 某些数字除以0,但我没有看到... (哦,是的,我确定所有输入的数字都不是0)
可能只是我的编码,把事情放在他们错误的地方? (是的,我知道我可以通过使用函数和所有这些来使代码变得更好......但我正在学习人,对我很温柔)。
或者,我的数学是非常错误的,并返回极高的东西?
在此先感谢大家!
你的输入是怎样的? –
似乎一个输入字段可能会接受一个字符串,然后当您使用解析双尝试解析整个字符串, – Remario
我在xml中的输入都是这样的,当然有不同的id: 然后,@Remario,我正在运行instanceof现在......只有在您可以对输入值执行任何算术运算后,才会立即返回 –
Luis