私はここで最後に何か尋ねたのでしばらくしています! 私は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でないことを確認しています)
間違った場所に物を置くだけのコーディングでもいいですか? (そして、はい、関数を使ってコードをもっと良くすることができることは知っていますが、そのすべてを...しかし、私は人を学んでいます。
または、私の数学は非常に間違っていて、極端に高いものを戻していますか?
ありがとうございます!
あなたの入力はどのように見えますか? –
これは、入力フィールドが文字列を受け入れる可能性があると思われる場合、解析doubleを使用すると、文字列全体の解析を試みる – Remario
xmlの入力は、すべてこのようになります。もちろん、異なるidsがあります。 そして、@Remario、私はinstanceofを実行しています...すぐに –
Luis