Android 将双值放入TextView
在我的Android应用程序中,我正在使用输入到EditText中的值计算一个双值,并尝试将答案输入到TextView中。我的代码是:Android 将双值放入TextView,android,parsing,textview,double,numberformatexception,Android,Parsing,Textview,Double,Numberformatexception,在我的Android应用程序中,我正在使用输入到EditText中的值计算一个双值,并尝试将答案输入到TextView中。我的代码是: double scoreDouble; TextView score; EditText gpa; EditText sat; EditText act; Button calc; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInst
double scoreDouble;
TextView score;
EditText gpa;
EditText sat;
EditText act;
Button calc;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
gpa = (EditText) findViewById(R.id.gpa);
String gpaString = gpa.getText().toString();
if(gpaString.equals("")){
gpaString = "0";
}
final double gpaDouble = Double.parseDouble(gpaString);
sat = (EditText) findViewById(R.id.sat);
String satString = sat.getText().toString();
if(satString.equals("")){
satString = "0";
}
final int satInt = Integer.parseInt(satString);
act = (EditText) findViewById(R.id.act);
String actString = act.getText().toString();
if(actString.equals("")){
actString = "0";
}
final int actInt = Integer.parseInt(actString);
score = (TextView) findViewById(R.id.score);
calc = (Button) findViewById(R.id.calc);
calc.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if(actInt/36>satInt/2400){
scoreDouble= (0.6*gpaDouble*25)+(0.4*(actInt/36)*100);
String scoreString = Double.toString(scoreDouble);
score.setText("Your score is "+scoreString);
}else{
scoreDouble = (0.6*gpaDouble*25)+(0.4*(satInt/2400)*100);
String scoreString = Double.toString(scoreDouble);
score.setText("Your score is "+scoreString);
}
}
});
}
现在,当按下按钮时,文本视图显示:“你的分数是0.0。”我觉得这与我将EditText的默认值设置为0有关。在此之前,我收到一个错误,声明NumberFormatException:invalid double:“”。如果这是问题所在,我应该如何解决它。如果这不是问题所在,那是什么?您将actInt和saint定义为最终变量,并且它们将只分配给一个值一次(当执行onCreate方法时),并且初始值将在edittext开始时为零,不包含任何内容 要解决这个问题: 将actInt和saint从局部变量移动到字段变量,并删除final关键字。(我的意思是将这些变量定义为类内的私有变量)并为onclick方法内的变量赋值
public class test extends Activity {
double scoreDouble;
TextView score;
EditText gpa;
EditText sat;
EditText act;
Button calc;
private int satInt;
private int actInt;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
gpa = (EditText) findViewById(R.id.gpa);
sat = (EditText) findViewById(R.id.sat);
act = (EditText) findViewById(R.id.act);
score = (TextView) findViewById(R.id.score);
calc = (Button) findViewById(R.id.calc);
calc.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
String gpaString = gpa.getText().toString();
if (gpaString.equals("")) {
gpaString = "0";
}
double gpaDouble = Double.parseDouble(gpaString);
String satString = sat.getText().toString();
if (satString.equals("")) {
satString = "0";
}
int satInt = Integer.parseInt(satString);
String actString = act.getText().toString();
if (actString.equals("")) {
actString = "0";
}
int actInt = Integer.parseInt(actString);
if (actInt / 36 > satInt / 2400) {
scoreDouble = (0.6 * gpaDouble * 25)
+ (0.4 * (actInt / 36) * 100);
String scoreString = Double.toString(scoreDouble);
score.setText("Your score is " + scoreString);
} else {
scoreDouble = (0.6 * gpaDouble * 25)
+ (0.4 * (satInt / 2400) * 100);
String scoreString = Double.toString(scoreDouble);
score.setText("Your score is " + scoreString);
}
}
});
}
}
您正在使用
onCreate
方法执行所有操作。因此,所有代码都会在应用程序开始时调用。此时,您的EditText
s为空,代码将转到以下部分:
if(gpaString.equals("")){
gpaString = "0";
}
if(actString.equals("")){
actString = "0";
}
if (actString.equals("")) {
actString = "0";
}
这意味着您的值gpaDouble
,actInt
和saint
等于0
然后,您将执行以下操作:
scoreDouble = (0.6*gpaDouble*25)+(0.4*(satInt/36)*100);
这是:
scoreDouble = (0.6*gpaDouble*25)+(0.4*(satInt/2400)*100);
对于0值,您的scoredoull
值只能等于0
要解决此问题,请在
按钮的onClick
方法中获取编辑文本
s'文本
您的问题到底是什么?它显示0.0而不是0?请尝试使用String.valueOf()而不是Double.toString()。问题是它不应该显示0.0。无论我在编辑文本中输入什么,它都会这样做。同时将其更改为String.valueOf并没有解决问题。是的,这解决了问题。非常感谢你。尊敬。