由于某种原因,它告诉我TextView变量fact1和fact2尚未初始化。我通过代码使用它们大约2/3,在if关于sol1和sol2的if中。请帮忙!谢谢!
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.");
}
}
});
}
}
答案 0 :(得分:4)
在初始化它们之前,您可以在它们上面调用setText()
。移动设置它们的代码。
答案 1 :(得分:0)
在声明时初始化fact1
和fact2
,如下所示:
TextView fact1 = (TextView) findViewById(R.id.tvfact1);
TextView fact2 = (TextView) findViewById(R.id.tvfact2);