elia93 Ответов: 1

Строка не преобразуется в целое число-приложение выходит из строя.


Итак, у меня есть editText, а inputtype - это "number", я пытаюсь использовать для него оператор if, например if (edtTxt > 20000 ) { // do this}, но он каждый раз вылетает, есть идеи, в чем проблема? пожалуйста, обратите внимание, что я посылаю это целое число через несколько действий.

Что я уже пробовал:

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_fre_quency_manual);



       btnEnter = (Button) findViewById(R.id.enter);
        btnClear = (Button) findViewById(R.id.clear);

        edtTxt = (EditText) findViewById(R.id.edtText);













        btnClear.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {


                edtTxt.setText("");


            }
        });





        btnEnter.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {



                AlertDialog.Builder builder = new AlertDialog.Builder(FreQuencyManual.this);
                builder.setTitle(" Confirmation ");
                builder.setMessage("Frequency scale : " + " " + edtTxt.getText().toString() + " " +"Are you sure?");


                builder.setPositiveButton(" Yes ", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {




                        if (edtTxt.getText().toString().matches("")){



                            Toast.makeText(getApplicationContext(), " Type the frequency scale first! ", Toast.LENGTH_SHORT).show();





                        }else {

                            Intent intentMove2 = new Intent(FreQuencyManual.this,Correction.class);
                            intentMove2.putExtra("msger",edtTxt.getText().toString());
                            startActivity(intentMove2);


                        }


                    }
                });

                builder.setNegativeButton(" No ", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {

                        dialogInterface.cancel();



                    }
                });




                AlertDialog dialog = builder.create();
                dialog.show();

            }




        });






                }}



 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_correction);


        gifImageView = (GifImageView) findViewById(R.id.gifBruhhhh);
        txtInsert = (TextView) findViewById(R.id.checkInsertedFrequency);




        Bundle bundle = getIntent().getExtras();
        String data = bundle.getString("msger");



        int nurse = Integer.parseInt(data);

        if (nurse<=20000 && nurse>=0){


            Intent intent = new Intent(Correction.this,LoadingOld.class);
            startActivity(intent);



        }else {


            Intent intent2 = new Intent(Correction.this,FreQuencyManual.class);
            startActivity(intent2);

        }







    }
}

Richard MacCutchan

Вам нужно проверить свою строку, прежде чем пытаться преобразовать ее в целое число, или использовать блок try/catch для перехвата строк, которые не являются числами.

elia93

Спасибо за ответ, есть идеи, как я могу проверить строку или окружить ее try catch в моем коде? я вроде как Новичок :D!

Richard MacCutchan

Вы проверяете одним из двух методов.
1. Используйте один из методов String class | разработчики Android[^] чтобы проверить, что он содержит только цифры.
2. Поймать любые ошибки в конструкции try/catch блок подхватить какую-нибудь NumberFormatException | Разработчики Android[^] как описано в Integer / Разработчики Android[^].

1 Ответов

Рейтинг:
1

Thomas Daniels

Если ваше приложение выходит из строя при выполнении преобразования... это означает, что ваш ввод не является допустимым целым числом. Однако если вы считаете, что это должно быть так, используйте свой отладчик, чтобы перейти к строке, где вы выполняете синтаксический анализ, а затем посмотрите, что именно передается в качестве аргумента функции синтаксического анализа. Основываясь на этом значении, вы можете попытаться выяснить, откуда оно берется - например, выполнив дальнейшую отладку на более ранних этапах.