自從我上次詢問這裏的任何東西以來已經有一段時間了! 我在做一個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