Проблема в castear переменные в Java (Android): NumberFormatException: For неудар в лунку string: “”

Он начинался с Android, но реализовав что-то, что в Java никогда не дало мне проблемы, и бросив это в Апп де Андроид, меня отпустили достаточно ошибок, выполнив это, потому что составлять это делает без проблем.

Упражнение, которое он попробовал реализовать, - очень простой, хромой калькулятор два типа стоимости двух отличных TextView, складывает их и показывает на экране результат.

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    public void calcularResultado(View view) {

        TextView cuadroNum1, cuadroNum2, resultado;

        cuadroNum1 = (TextView) findViewById(R.id.tNum1);
        cuadroNum2 = (TextView) findViewById(R.id.tNum2);
        resultado = (TextView) findViewById(R.id.resultado);


        int num1 = 0, num2 = 0, aux;


        num1 = Integer.parseInt(cuadroNum1.getText().toString());
        num2 = Integer.parseInt(cuadroNum2.getText().toString());

        resultado.setText(String.format(""+ (num1 + num2) ));
    }
}

Сделав несколько доказательств я понял, что приложение закрывалось после того, как состязался ее с casteos, как возможно видеть в коде.

Я не знаю, в Android не ли могут casteos осуществляться так, потому что TextView возвращают "Чар Секенсес", но перемещать их в String он не дает ошибки до тех пор, пока я не пробую перемещать их в переменные типа int, или если бы он был должен использовать другой альтернативный элемент в TextView, если я хочу работать с цифрами.

Код ошибка:

       --------- beginning of crash
E/AndroidRuntime: FATAL EXCEPTION: main
                  Process: com.pabloperezaradros.calculadora, PID: 2740
                  java.lang.IllegalStateException: Could not execute method for android:onClick
                      at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:293)
                      at android.view.View.performClick(View.java:5610)
                      at android.view.View$PerformClick.run(View.java:22260)
                      at android.os.Handler.handleCallback(Handler.java:751)
                      at android.os.Handler.dispatchMessage(Handler.java:95)
                      at android.os.Looper.loop(Looper.java:154)
                      at android.app.ActivityThread.main(ActivityThread.java:6077)
                      at java.lang.reflect.Method.invoke(Native Method)
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
                   Caused by: java.lang.reflect.InvocationTargetException
                      at java.lang.reflect.Method.invoke(Native Method)
                      at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)
                      at android.view.View.performClick(View.java:5610) 
                      at android.view.View$PerformClick.run(View.java:22260) 
                      at android.os.Handler.handleCallback(Handler.java:751) 
                      at android.os.Handler.dispatchMessage(Handler.java:95) 
                      at android.os.Looper.loop(Looper.java:154) 
                      at android.app.ActivityThread.main(ActivityThread.java:6077) 
                      at java.lang.reflect.Method.invoke(Native Method) 
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865) 
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755) 
                   Caused by: java.lang.NumberFormatException: For input string: ""
                      at java.lang.Integer.parseInt(Integer.java:533)
                      at java.lang.Integer.parseInt(Integer.java:556)
                      at com.pabloperezaradros.calculadora.MainActivity.calcularResultado(MainActivity.java:26)
                      at java.lang.reflect.Method.invoke(Native Method) 
                      at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288) 
                      at android.view.View.performClick(View.java:5610) 
                      at android.view.View$PerformClick.run(View.java:22260) 
                      at android.os.Handler.handleCallback(Handler.java:751) 
                      at android.os.Handler.dispatchMessage(Handler.java:95) 
                      at android.os.Looper.loop(Looper.java:154) 
                      at android.app.ActivityThread.main(ActivityThread.java:6077) 
                      at java.lang.reflect.Method.invoke(Native Method) 
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865) 
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755) 
2
задан 03.08.2018, 18:32
3 ответа

У тебя есть эта проблема, назвав метод onClick() считая следующее главной проблемой:

Caused by: java.lang. NumberFormatException: For неудар в лунку string: ""

И происходи, когда ты пробуешь конвертировать стоимость string не числовой в int, в этом случае пустой string, "".

Ты можешь использовать функцию, чтобы подтверждать сначала, числовая ли стоимость, чтобы позже использовать Integer.parseInt() чтобы реализовывать превращение:

public static boolean isNumeric(String valor) {
 try {
double d = Double.parseDouble(valor); 
} catch(NumberFormatException e) { 
return false; 
} 
return true;
 }

На основании предыдущего метода мы можем использовать тройную операцию, чтобы реализовывать превращение:

int num1 = 0, num2 = 0, aux;
num1 = isNumeric(cuadroNum1.getText().toString())? Integer.parseInt(cuadroNum1.getText().toString()):0 ; 
num2 = isNumeric(cuadroNum2.getText().toString())? Integer.parseInt(cuadroNum2.getText().toString()):0 ; 

Когда стоимость не будет númerico, результата будет 0, ты можешь определять стоимость default.

4
ответ дан 03.12.2019, 20:02
  • 1
    Спасибо за твой ответ, в мою программу я не переместил его ничего, чем они не были бы n и # 250; морские окуни. То, что ты предлагаешь мне, помогает мне управлять об ошибке, не это решать. Мой intenci и # 243; n он состоит в том, чтобы вмещаться int этих textview. Если я не могу castearlos равно, я должен использовать другие поля. –  Pablo Pérez-Aradros 09.10.2016, 15:11
  • 2
    Ошибка, что у тебя есть * Caused by: java.lang. NumberFormatException: For неудар в лунку string: " " * он вызван, потому что ** ты пробуешь обращать пустой string в целое число. ** я не понимаю, потому что ты говоришь, что это помогает управлять об этом и не это решать –  Jorgesys♦ 09.10.2016, 16:57
  • 3
    Потому что с твоим м и # 233; совсем ты избегаешь того, чтобы он отпустил ошибку, и est и # 225; очень хорошо выдвинутый, но продолжи, что, не решая причины, он не берет контент textview и castea, потому что хотя excepc и # 243; n скажите, что поле est и # 225; пустота в мою программу всегда я ввожу стоимость и даже схвати и # 237; дай ту же ошибку и уже я подтвердил, вмещается ли хорошо цепь (которая, если он берет ее) textview, просто не удается, реализовав casteo, хотя не очень хорошо потому что. Так или иначе уже решение и # 233; используя поля editText. Большое спасибо в течение твоего времени. –  Pablo Pérez-Aradros 09.10.2016, 17:12

Внутренние операции с целыми числами должны идти между скобкой, как в Java. кроме того будь должен объявлять Ваши компоненты в методе onCreate

TextView cuadroNum1, cuadroNum2, resultado;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    cuadroNum1 = (TextView) findViewById(R.id.tNum1);
    cuadroNum2 = (TextView) findViewById(R.id.tNum2);
    resultado = (TextView) findViewById(R.id.resultado);
}

 public void calcularResultado(View view) {
    int num1 = 0, num2 = 0, aux;
    num1 = Integer.parseInt(cuadroNum1.getText().toString());
    num2 = Integer.parseInt(cuadroNum2.getText().toString());

    resultado.setText(String.format(""+ (num1 + num2) ));


 }
1
ответ дан 03.12.2019, 20:02
  • 1
    стой спасибо, не я hab и # 237; в отчитанный, но даже схвати и # 237; проблема дает мне в Integer.parseInt и nose очень хорошо из-за qu и # 233;. –  Pablo Pérez-Aradros 09.10.2016, 03:24
  • 2
    Спасибо снова из-за твоего ответа, я попытался tambi и # 233; n valueOf и продолжи разбивать aplicaci и # 243; n, я обновил вопрос с ошибками aplicaci и # 243; n. Приветствие. –  Pablo Pérez-Aradros 09.10.2016, 03:36
  • 3
    Проверять мой Ответ, объявлять твои переменные перед M и # 233; совсем onCreate() и внутри и #233; l Инициализировать вышеупомянутые переменные. –  Dev. Joel 09.10.2016, 04:39
  • 4
    Совсем ничего, останься, не функционируя также –  Pablo Pérez-Aradros 09.10.2016, 15:15

Добавь, что хорошее я использую 2 EditText, 1 TextView (результат) и 1 Button

public class ejemplo extends AppCompatActivity {
private EditText editorTexto1, editorTexto2;
private TextView vistaTexto;
private Button boton;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.ejemplo_activity);
    editorTexto1    = (EditText)findViewById(R.id.editText1);
    editorTexto2    = (EditText)findViewById(R.id.editText1);
    vistaTexto      = (TextView)findViewById(R.id.textView);
    boton           = (Button)findViewById(R.id.button);
}

@Override
protected void onResume() {
    super.onResume();
    boton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            calcularResultado();
        }
    });
}

public void calcularResultado() {
    int num1 = 0, num2 = 0, resultado = 0;

    num1 = Integer.parseInt(editorTexto1.getText().toString());
    num2 = Integer.parseInt(editorTexto1.getText().toString());
    resultado = num1 + num2;

    vistaTexto.setText(String.valueOf(resultado));
}}
0
ответ дан 03.12.2019, 20:02
  • 1
    Проблема была из-за TextView, сейчас оно я функционирует верно. Большое спасибо и приветствие. –  Pablo Pérez-Aradros 09.10.2016, 15:26
  • 2
    Какая проблема была у TextView? *я не понимаю, как я решаюсь textview!!! =0 –  Jorgesys♦ 09.10.2016, 16:52
  • 3
    Не cu и # 225; l был проблемой, но с тем же планированием, просто несмотря на то, что использовал editText вместо TextView функцию и # 243; правильно. –  Pablo Pérez-Aradros 09.10.2016, 17:14
  • 4
    Пабло ничего, остается в твоей дорожке ninja =) @Elenasys решается, если он инициализирует textview с любой n и # 250; морской окунь (в этом случае 0, уже не tendr и # 237; в excepci и # 243; n) –  marlonpya 10.10.2016, 01:36