локальная переменная не была инициализирована? - PullRequest
0 голосов
/ 27 декабря 2011

По какой-то причине он говорит мне, что переменные TextView fact1 и fact2 не были инициализированы.Я использую их около 2/3 через код, в случае, если еще относительно sol1 и sol2.Пожалуйста помоги!Спасибо!

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.");
                }
            }
        });
    }
}

Ответы [ 2 ]

4 голосов
/ 27 декабря 2011

Вы вызываете setText() на них, прежде чем инициализировать их.Переместите код, который их устанавливает.

0 голосов
/ 27 декабря 2011

Инициализируйте fact1 и fact2 при их объявлении, например:

TextView fact1 = (TextView) findViewById(R.id.tvfact1);
TextView fact2 = (TextView) findViewById(R.id.tvfact2);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...