我正在開發我的第一個應用程序,它解決了二次公式,我遇到了一個問題,即當值a大於1時,應用程序給出了根的錯誤答案。 這是代碼:當A> 1時二次公式失敗?
package com.example.firstapp;
import java.lang.Math;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void calculate(View v){
EditText number1text = (EditText)findViewById(R.id.a);
EditText number2text = (EditText)findViewById(R.id.b);
EditText number3text = (EditText)findViewById(R.id.c);
double num1 = Double.parseDouble(number1text.getText().toString()) , num2 = Double.parseDouble(number2text.getText().toString()), num3 = Double.parseDouble(number3text.getText().toString());
if ((num2 * num2) - (4*num1*num3) < 0){
}
double ans = (double) ((-(num2)- (Math.sqrt(num2 * num2 - (4*num1*num3))))/2*num1);
double ans2 = (double) (((-(num2)+ Math.sqrt(num2 * num2 - (4*num1*num3))))/2*num1);
TextView answer = (TextView)findViewById(R.id.ans1);
answer.setText("The first root is: " + ans);
TextView answer2 = (TextView)findViewById(R.id.ans2);
answer2.setText("The second root is: " + ans2);
}
private TextView getText(String string) {
// TODO Auto-generated method stub
return null;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
任何有關爲什麼發生這種情況的幫助將是非常有用的。
由於提前
好一兩件事,有沒有你的if語句中。 – 2014-11-04 23:13:18
當您檢查b * b-4ac是否小於零時,您應該有代碼來計算其他內部的ans1和ans2。否則,如果行列式小於零,它仍然計算它。除此之外,還有許多不相關的代碼和num1,num2和num3不是變量的好名字,因此請考慮將它們更改爲a,b,c以匹配編寫公式的標準方式 – user1646196 2014-11-04 23:15:30
添加功能一個沒有錯直到程序完成它需要做的一切。 OP還沒有處理「無根案件」,這很好,因爲他/她還沒有完成「a!= 1」案件。 – 2014-11-04 23:17:52