Как проверить на NumberFormatException: пустая строка - PullRequest
0 голосов
/ 27 декабря 2018

Я хочу посчитать среднюю оценку, теперь у меня есть основы и макет.Когда EditText остается открытым, он выбрасывает NumberFormatException.Может кто-нибудь объяснить мне, как это проверить?

Любые советы и т. Д. Приветствуются!

PS my EditText установлены на NumberDecimal, поэтому у меня нет типа "неправильный ввод".

final TextView averageView = findViewById(R.id.averageView); 
final String averageText = getString(R.string.average); 
final Button calculateButton = findViewById(R.id.calculateAverageButton); 
final Button addGradeButton = findViewById(R.id.addGradeButton)

calaculateButton.setOnClickListener(new View.onClickListener() { 
    @SupressLint("SetTextI18n")                                                     
    public void onClick(View v) { 

        double grade[]  = {Double.parseDouble(((EditText) findViewById(R.id.grade1)).getText().toString()); 

        double weight[] = {Double.parseDouble(((EditText) findViewById(R.id.weight1)).getText().toString()); 

        double weightTotal = weight[0]; double sum = grade[0] * weight[0] 

        double average = sum / weightTotal 

        @SuppressLint("DefaultLocale") String averageResult = String.format(%.2f, average);

        averageView.setText(averageText + " " + averageResult);

Ответы [ 3 ]

0 голосов
/ 27 декабря 2018

Вы можете попробовать "попробовать - поймать", чтобы управлять таким исключением:

try {
   double grade = Double.parseDouble(((EditText) findViewById(R.id.numberanswer)).getText().toString());
   answer.setText("" + grade);
} catch (NumberFormatException e){
   Toast.makeText(getApplicationContext(),"Please insert a number",Toast.LENGTH_SHORT).show();
}
0 голосов
/ 27 декабря 2018

Я завершил его с помощью оператора «try-catch», он перехватывает NumberFormatException каждый раз, когда поле остается открытым.

final TextView averageView = findViewById(R.id.averageView); 
final String averageText = getString(R.string.average); 
final Button calculateButton = findViewById(R.id.calculateAverageButton); 
final Button addGradeButton = findViewById(R.id.addGradeButton)

calaculateButton.setOnClickListener(new View.onClickListener() { 
    @SupressLint("SetTextI18n")                                                     
    public void onClick(View v) { 

       try {
        double grade[]  = {Double.parseDouble(((EditText) findViewById(R.id.grade1)).getText().toString()); 

        double weight[] = {Double.parseDouble(((EditText) findViewById(R.id.weight1)).getText().toString()); 

        double weightTotal = weight[0]; double sum = grade[0] * weight[0] 

        double average = sum / weightTotal 

        @SuppressLint("DefaultLocale") String averageResult = String.format(%.2f, average);

        averageView.setText(averageText + " " + averageResult);
      { catch (NumberFormatException e) {
          Toast.makeText(MainActivity.this, "There is a empty field!", Toast.LENGTH_LONG).show();
      }
0 голосов
/ 27 декабря 2018

Проверьте ваши условия ошибки, прежде чем пытаться сделать то, что создает ошибку

final TextView averageView = findViewById(R.id.averageView); 
final String averageText = getString(R.string.average); 
final Button calculateButton = findViewById(R.id.calculateAverageButton); 
final Button addGradeButton = findViewById(R.id.addGradeButton)

EditText[] grades = new EditText[] {
    (EditText) findViewById(R.id.grade1)
};
EditText[] weights = new EditText[] {
    (EditText) findViewById(R.id.weight1)
};

calculateButton.setOnClickListener(new View.onClickListener() {   
    @Override                                               
    public void onClick(View v) { 
        String grade1 = grades[0].getText().toString();
        String weight1 = weights[0].getText().toString();

        if (TextUtils.isEmpty(grade1) || TextUtils.isEmpty(weight1)) {
            return; // TODO: Show some error
        }

        double sum = Double.parseDouble(grade1) * Double.parseDouble(weight1); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...