[英]local variable has not been initialized?
For some reason, it tells me that the TextView variables fact1 and fact2 have not been initialized. 由于某种原因,它告诉我TextView变量fact1和fact2尚未初始化。 I use them about 2/3 through the code, within the if else concerning sol1 and sol2. 在关于sol1和sol2的if else中,我通过代码在大约2/3中使用它们。 Please help! 请帮忙! Thanks! 谢谢!
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.");
}
}
});
}
}
You call setText()
on them before you initialize them. 在初始化它们之前,可以在它们上调用setText()
。 Move the code that sets them up. 移动设置它们的代码。
Initialize fact1
and fact2
when you declare them, like this: 在声明它们时初始化fact1
和fact2
,如下所示:
TextView fact1 = (TextView) findViewById(R.id.tvfact1);
TextView fact2 = (TextView) findViewById(R.id.tvfact2);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.