2011-08-20 101 views
3

我正在構建一個基於A,B和C的用戶輸入解決二次公式的應用程序。我遇到了問題。 A,B和C都是整數,但它們需要使用EditText組件editText1(和2,3)的值,以便公式可以運行A,B,C。如何以整數形式獲取Android EditText組件的值?

如何獲取值?這裏是我的代碼,其中這部分丟失:

double root1=0; 
    double root2=0; 
    double discriminant; 
    int A; 
    int B; 
    int C; 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
       /** Called when the activity is first created. */ 
      //reset button will be a menu option 

     final TextView textView6 = (TextView) findViewById(R.id.textView6); 
     EditText inputA = (EditText)findViewById(R.id.editText1) ; 
     EditText inputB = (EditText)findViewById(R.id.editText2); 
     EditText inputC = (EditText)findViewById(R.id.editText3); 
     Button calcbutton = (Button)findViewById(R.id.calcbutton); 


     calcbutton.setOnClickListener(new View.OnClickListener() { // when calculate is clicked 

      public void onClick(View v) { 
       // TODO Auto-generated method stub 

       discriminant = Math.sqrt((B*B)-(4*A*C)); 

       if(discriminant>0){ 
        root1 = ((-B + discriminant)/2*A); 
        root2 = ((-B - discriminant)/2*A); 

        // set textview6 to answer above  

        textView6.setTag(root1); 
        textView6.setTag(root2); 
        } 

       if(discriminant==0){ 

        root1=(int) ((-B + discriminant)/2*A); 
        textView6.setTag(root1); 
       } 

       if(discriminant<0){ 
        textView6.setText("This equation has imaginary roots"); 
        // equation has imaginary roots 
       } 


      } 
     }); 
    } 
} 
+0

再給你一個數學註釋:判別式是根部以下的術語,即'(B * B) - (4 * A * C)'。你不能合理地取負數的平方根,例如你應該首先檢查它的標誌,然後紮根。 –

回答

0

可以使用轉換stringint或其他類型如下:

// convert text to an integer 
int number = Integer.parseInt(editText1.getText().toString()); 

// convert text to a double 
double number = Double.parseDouble(editText1.getText().toString()); 
+0

'EditText#getText()'返回一個'Editable',而不是'String'。 –

+0

D'oh!謝謝馬特,修好了。 –

4

如果你讀了API文檔,你」您將看到您可以使用EditText#getText()訪問EditText中的值。

public void onClick(View v) { 
    A = Double.parseDouble(inputA.getText().toString()); 
    B = Integer.parseInt(inputB.getText().toString()); 
    C = Integer.parseInt(inputC.getText().toString()); 

    discriminant = Math.sqrt((B*B)-(4*A*C)); 
    // etc. 
} 
+0

非常感謝你的回覆。我嘗試過這樣的事情,但我做錯了。這對我來說更有意義。謝謝!我非常欣賞這一點。 – jtrain45

相關問題