2015-12-19 4 views
1

В eclipse я попытался сделать калькулятор. У меня было два отдельных текстовых поля для двух чисел и кнопки вычитания сложения. Когда я нажимаю кнопку «Добавить» или «Суб», не внося входящие значения, происходит сбой приложений. Есть ли какой-нибудь возможный выход?Нажатие кнопки приводит к сбою приложения

public void onClick(View v) { 
    // TODO Auto-generated method stub 
    String l1= et1.getText().toString(); 
    String l2= et2.getText().toString(); 
    int a=0, b=0; 

    double result=0.0; 
    a=Integer.parseInt(l1); 
    b=Integer.parseInt(l2); 

    switch(v.getId()) 
    { 
    case R.id.b1: 

     result=a+b; 
     break; 
    case R.id.b2: 
     result=a-b; 
     break; 
    case R.id.b3: 
     result = a*b; 
     break; 
    case R.id.b4: 
     if(b==0) 
     { 
      open("Cannot Divide By zero"); 
     } 
     else result = a/b; 
     break; 
    } 
    et3.setText(Double.toString(result)); 
} 
+0

Какое сообщение было послано? – badjr

+0

вставьте свой код здесь – AndroidMechanic

+0

Приложение аварийно ... К сожалению калькулятор остановился – user5698667

ответ

1

Ответ Клейтона Оливейры хорош. Он обрабатывает пустую ситуацию ввода. Этот код обрабатывает все случаи, когда l1, l2 не может быть проанализирован с целым числом.

try{ 
    a=Integer.parseInt(l1); 
    b=Integer.parseInt(l2); 
} catch(NumberFormatException e) { 
    Log.e("Wrong input", e.getMessage()); 
} 
+0

Спасибо Джеффри, даже это правильно. Я попробовал. благодаря – user5698667

0

Вы должны разместить более подробную информацию о вашем коде, чтобы получить много поддержки на здесь, но я думаю, вы должны получить эту проблему:

Добавить или подфункции нетто два целое число для вычисления, но не вводить какой-либо значение (числовое значение) в Edittext (текстовое поле), а значение равно пустой или пустой строке, поэтому неправильно.

- Вы устанавливаете edittext, чтобы требовать значение входного числа, а не строку - вам нужно проверить, что входное значение ввода пуст (если оно истинно, а не что-то) перед вычислением.

+0

Как проверить, пуст или нет ? – user5698667

+0

Вы можете использовать: 'if (l1.length> 0)' или 'TextUtils.isEmpty (l1)' –

1

Если значение значения не было введено в EditText, метод Integer.parseInt() завершится сбой, потому что переданная строка не является допустимым числом.

a=Integer.parseInt(l1); 
b=Integer.parseInt(l2); 

Заменить:

if(!l1.isEmpty() && !l2.isEmpty()){ 
    a=Integer.parseInt(l1); 
    b=Integer.parseInt(l2); 
}else{ 
    Toast.makeText(this,"Something is wrong!",Toast.LENGTH_SHORT).show(); 
} 

Примечания: код выше только проверить, если что-то было введено в EditTexts, вы должны проверить, если это число также. я оставлю эту часть для вас, чтобы узнать;)

+0

Спасибо, Клейтон, который мне помог. Спасибо. – user5698667

+0

Ищите свойство android inputType, которое вы можете добавить в свой EditText. Можете ли вы пометить этот ответ как правильный? Спасибо. –

Смежные вопросы