十进制输入崩溃
Decimal input crash
所以我是 Android 工作室的初学者,我正在尝试制作这个简单的应用程序来计算您总共喝了多少水和平均喝了多少水。这个想法是,有人在整个星期的每一天都输入他们喝了多少水。当我点击 "calculate it" 计算一天的总数和平均值。
我的问题是,每当我输入带小数点的数字(如 2,3)时,应用程序就会崩溃。我确实找到了一个解决方案,我需要做一个验证(if,else)函数,但我不太确定如何在一个函数中整天 select。
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button addBtn = (Button) findViewById(R.id.calculateBtn);
addBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
EditText editTextMon = (EditText) findViewById(R.id.editTextMon);
EditText editTextTue = (EditText) findViewById(R.id.editTextTue);
EditText editTextWed = (EditText) findViewById(R.id.editTextWed);
EditText editTextThu = (EditText) findViewById(R.id.editTextThu);
EditText editTextFri = (EditText) findViewById(R.id.editTextFri);
EditText editTextSat = (EditText) findViewById(R.id.editTextSat);
EditText editTextSun = (EditText) findViewById(R.id.editTextSun);
TextView resultTextView = (TextView) findViewById(R.id.resultTextView);
TextView errorView = (TextView) findViewById(R.id.errorView);
TextView averageTextView = (TextView) findViewById(R.id.averageTextView);
EditText allDays = (EditText) findViewById(R.id.editTextMon);
int mon = Integer.parseInt(editTextMon.getText().toString());
int tue = Integer.parseInt(editTextTue.getText().toString());
int wed = Integer.parseInt(editTextWed.getText().toString());
int thu = Integer.parseInt(editTextThu.getText().toString());
int fri = Integer.parseInt(editTextFri.getText().toString());
int sat = Integer.parseInt(editTextSat.getText().toString());
int sun = Integer.parseInt(editTextSun.getText().toString());
if ( ! (allDays.equals("") || allDays.equals("-")) ) {
int result = mon + tue + wed + thu + fri + sat + sun;
resultTextView.setText("Total: " + result + " L");
int average = result / 7;
averageTextView.setText("Avg: " + average + " L");
} else {
errorView.setText("Invalid Input");
}
}
});
}
}
您正在以 Integer
数据类型存储所有值。
使用 float
存储它们并使用 Float.parseFloat(yourEditText.getText().toString());
解析它们
在这种情况下,您可以使用 Float x = Float.parseFloat(y);
所以我是 Android 工作室的初学者,我正在尝试制作这个简单的应用程序来计算您总共喝了多少水和平均喝了多少水。这个想法是,有人在整个星期的每一天都输入他们喝了多少水。当我点击 "calculate it" 计算一天的总数和平均值。
我的问题是,每当我输入带小数点的数字(如 2,3)时,应用程序就会崩溃。我确实找到了一个解决方案,我需要做一个验证(if,else)函数,但我不太确定如何在一个函数中整天 select。
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button addBtn = (Button) findViewById(R.id.calculateBtn);
addBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
EditText editTextMon = (EditText) findViewById(R.id.editTextMon);
EditText editTextTue = (EditText) findViewById(R.id.editTextTue);
EditText editTextWed = (EditText) findViewById(R.id.editTextWed);
EditText editTextThu = (EditText) findViewById(R.id.editTextThu);
EditText editTextFri = (EditText) findViewById(R.id.editTextFri);
EditText editTextSat = (EditText) findViewById(R.id.editTextSat);
EditText editTextSun = (EditText) findViewById(R.id.editTextSun);
TextView resultTextView = (TextView) findViewById(R.id.resultTextView);
TextView errorView = (TextView) findViewById(R.id.errorView);
TextView averageTextView = (TextView) findViewById(R.id.averageTextView);
EditText allDays = (EditText) findViewById(R.id.editTextMon);
int mon = Integer.parseInt(editTextMon.getText().toString());
int tue = Integer.parseInt(editTextTue.getText().toString());
int wed = Integer.parseInt(editTextWed.getText().toString());
int thu = Integer.parseInt(editTextThu.getText().toString());
int fri = Integer.parseInt(editTextFri.getText().toString());
int sat = Integer.parseInt(editTextSat.getText().toString());
int sun = Integer.parseInt(editTextSun.getText().toString());
if ( ! (allDays.equals("") || allDays.equals("-")) ) {
int result = mon + tue + wed + thu + fri + sat + sun;
resultTextView.setText("Total: " + result + " L");
int average = result / 7;
averageTextView.setText("Avg: " + average + " L");
} else {
errorView.setText("Invalid Input");
}
}
});
}
}
您正在以 Integer
数据类型存储所有值。
使用 float
存储它们并使用 Float.parseFloat(yourEditText.getText().toString());
在这种情况下,您可以使用 Float x = Float.parseFloat(y);