2011-12-27 28 views
0

なんらかの理由で、TextView変数fact1とfact2が初期化されていないことがわかります。私はsol1とsol2に関するif elseの中でコードを使って約2/3を使います。助けてください!ありがとう!ローカル変数が初期化されていませんか?

package boston.project; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 

public class TheBostonProjectActivity extends Activity { 

    public EditText aed, bed, ced; 
    public TextView dtv, nstv, sol1tv, sol2tv, factortv; 
    public int a, b, c, dis; 
    public Button solve; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     solve = (Button) (findViewById(R.id.bsolve)); 
     solve.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View v) { 
       // Perform action on click 

       aed = (EditText) (findViewById(R.id.etA)); 
       try { 
        a = Integer.parseInt(aed.getText().toString()); 
       } catch (NumberFormatException e) { 
        a = 0; 
       } 
       bed = (EditText) (findViewById(R.id.etB)); 
       try { 
        b = Integer.parseInt(bed.getText().toString()); 
       } catch (NumberFormatException e) { 
        b = 0; 
       } 
       ced = (EditText) (findViewById(R.id.etC)); 
       try { 
        c = Integer.parseInt(ced.getText().toString()); 
       } catch (NumberFormatException e) { 
        c = 0; 
       } 

       dtv = (TextView) findViewById(R.id.tvdis); 
       dis = (b * b) - (4 * a * c); 
       dtv.setText("Discriminant: " + dis); 
       nstv = (TextView) findViewById(R.id.tvnumsol); 
       sol1tv = (TextView) findViewById(R.id.tvsol1); 
       sol2tv = (TextView) findViewById(R.id.tvsol2); 
       if (dis > 0) { 
        double sol1, sol2; 
        TextView fact1, fact2; 
        sol1 = ((-b) + ((b * b) + (4 * a * c))^(1/2))/(2 * a); 
        sol2 = ((-b) + ((b * b) - (4 * a * c))^(1/2))/(2 * a); 
        sol1tv.setText("Solution 1: " + sol1); 
        sol2tv.setText("Solution 2: " + sol2); 
        nstv.setText("The equation will have 2 solutions."); 
        if (sol1 > 0) { 
         fact1.setText("(x-" + sol1 + ")"); 
        } else { 
         double sol1pos; 
         sol1pos = Math.abs(sol1); 
         fact1.setText("(x+" + sol1pos + ")"); 
        } 
        if (sol2 > 0) { 
         fact2.setText("(x+" + sol2 + ")"); 
        } else { 
         double sol2pos; 
         sol2pos = Math.abs(sol2); 
         fact1.setText("(x+" + sol2pos + ")"); 
        } 
        fact1 = (TextView) findViewById(R.id.tvfact1); 
        fact2 = (TextView) findViewById(R.id.tvfact2); 
       } else if (dis == 0) { 
        double sol1; 
        String fact; 

        sol1 = (-b)/(2 * a); 
        sol1tv.setText("Solution 1: " + sol1); 
        sol2tv.setText("No second solution"); 
        nstv.setText("The equation will have 1 solution."); 

        if (sol1 > 0) { 
         fact = ("(x+" + sol1 + ")²"); 
        } else { 
         fact = ("(x-" + sol1 + ")²"); 
        } 
       } else { 
        sol1tv.setText("No second solution"); 
        sol2tv.setText("No second solution"); 
        nstv.setText("The equation will have no solutions."); 
       } 
      } 
     }); 
    } 
} 

答えて

4

初期化する前にsetText()を呼び出してください。それらを設定するコードを移動します。このような

+0

は働いていたこと、ありがとうございました! – Wilson

+0

答えを受け入れることはできますか?それは将来の質問に答えるのに役立ちます。 –

+0

はい!私は3分待たなくてはならない。 – Wilson

0

初期fact1fact2あなたがそれらを宣言し、:

TextView fact1 = (TextView) findViewById(R.id.tvfact1); 
TextView fact2 = (TextView) findViewById(R.id.tvfact2); 
関連する問題