2016-08-24 3 views
1

Я получаю java.lang.NumberFormatException: Invalid int: errorjava.lang.NumberFormatException: Invalid INT: «»

Я считаю, что заявления являются подходящими

  1. Я принял ввод чисел в строке ранее сам.
  2. В приведенной ниже части вычисляется сумма.
  3. Вторая часть является продолжением 1-й части.

Декларация приводится ниже:

protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    final EditText num1 = (EditText)findViewById(R.id.num1); 
    final EditText num2 = (EditText)findViewById(R.id.num2); 
    final EditText resu = (EditText)findViewById(R.id.resu); 
    resu.setFocusableInTouchMode(false); 
    resu.setFocusable(false); 
    resu.setClickable(false); 
    final Button plus = (Button)findViewById(R.id.plus); 


    final String n1 = num1.getText().toString(); 

    final String n2 = num2.getText().toString(); 

В программе клик:

plus.setOnClickListener(
    new Button.OnClickListener() { 
     public void onClick(View view) {   
      try{ 
       float sum = Integer.valueOf(n1) + Integer.valueOf(n2); 
       String a = Float.toString(sum); 
       a = a.trim(); 
       resu.setText(""+a); 
      }catch(Exception e){ 
       resu.setText(""+e); 
      } 
     }  
    ); 

ответ

2

Переместить следующий код внутри вашего метода onlick(), потому что в вашем oncreate() если EditText пуст он вернется empty String (""), поэтому вам нужно получить значение при нажатии кнопки, а не перед этим:

final String n1 = num1.getText().toString(); 

final String n2 = num2.getText().toString(); 

To:

plus.setOnClickListener(new Button.OnClickListener() { 
    public void onClick(View view) { 
     try { 
      final String n1 = num1.getText().toString(); 
      final String n2 = num2.getText().toString(); 
      float sum = Integer.valueOf(n1) + Integer.valueOf(n2); 
      String a = Float.toString(sum); 
      a = a.trim(); 
      resu.setText(""+a); 
     } catch(Exception e) { 
      resu.setText(""+e); 
     } 
    } 
}); 
+0

, чем вы! это помогло! однако это вызывает дублирование кода для каждой кнопки (предположим, что у меня много кнопок!) Как я могу записать эти две строки один раз и все еще работать правильно (без использования новой кнопки) –

+0

Вы можете использовать такие вещи, как это: Integer.valueOf (num1.getText(). toString()) + Integer.valueOf (num2.getText(). toString()); Пожалуйста, отметьте этот ответ как правильный, если это помогло вам – JpCrow

+0

помогло, спасибо –

0

Проблема лежит на Integer объекта к float примитивного преобразования типа. Я думаю, что если вы дадите ввод целым числом, тогда ваш код должен работать нормально. Код

float sum = Integer.valueOf(n1) + Integer.valueOf(n2);

Но если это не целое число, то симметричный incounter NumberFormatException вы не в состоянии преобразовать String в свой соответствующий примитивный тип данных.

А также проверить на пустую строку ("") в n1 и n2 по if(n1=="")

plus.setOnClickListener(new Button.OnClickListener() { 
     public void onClick(View view) { 

      try 
      { 
       final String n1 = num1.getText().toString();  
       final String n2 = num2.getText().toString(); 
       if(n1==""){ 
        n1="0"; 
       } 
       float sum = Float.valueOf(n1) + Float.valueOf(n2); 
       String a = Float.toString(sum); 
       a = a.trim(); 
       resu.setText(""+a); 
      } 

      catch(Exception e) 
      { 
       resu.setText(""+e); 
      } 
     } 
     }); 
Смежные вопросы