Сбой десятичного ввода
Поэтому я новичок в Android Studio и пытаюсь сделать это простое приложение, которое подсчитывает, сколько воды вы в общей сложности и в среднем пьете. Идея состоит в том, что каждый день в течение целой недели кто-то печатает, сколько воды он выпил. Когда я нажимаю кнопку "Рассчитать", вычисляется общее и среднее значение за день.
Моя проблема в том, что всякий раз, когда я добавляю число с десятичной дробью, как 2,3, приложение вылетает. Я нашел решение, где мне нужно было сделать функцию проверки (если, иначе), но я не совсем уверен, как выбрать все дни в одной функции.
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");
}
}
});
}
}
2 ответа
You are storing all the values in Integer
тип данных. использование float
to store them and parse them using Float.parseFloat(yourEditText.getText().toString());
В этом случае вы можете использовать Float x = Float.parseFloat(y);