Сбой десятичного ввода - PullRequest
0 голосов
/ 30 мая 2018

Итак, я новичок в 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 ]

0 голосов
/ 30 мая 2018

В этом случае вы можете использовать Float x = Float.parseFloat(y);

0 голосов
/ 30 мая 2018

Вы сохраняете все значения в типе данных Integer.Используйте float, чтобы сохранить их и проанализировать, используя Float.parseFloat(yourEditText.getText().toString());

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...