Что вызывает сбой моего приложения в этой программе? — Android Studio

#java #android #android-studio

#java #Android #android-studio

Вопрос:

Я написал программу, в которой генерируются случайные числа и отображаются на экране, при этом показано, что они суммируются. Затем пользователь должен ввести сумму двух или более чисел, чтобы набрать балл. Все это ясно показано в коде, показанном ниже. Моя проблема в том, что при нажатии кнопки запуска игры происходит сбой моего приложения / Раньше у меня не было этой проблемы, хотя программа тогда не была полностью завершена, поэтому мне пришлось развивать ее дальше. В этой разработке я столкнулся с проблемой сбоя моего приложения. Я полагаю, что это как-то связано со случайными переменными loadG2a и loadG2b типа int и, возможно, либо с их интеграцией в parseInt как (numbers.getText()), либо с установкой их вместе в текстовом представлении «numbers» в первую очередь. Возможно, это вообще не так. В любом случае, я пытался решить это решение, но не смог найти исправление. Вот код:

 final Button loseStarter2;

        loseStarter2 = (Button) findViewById(R.id.Starter2);
        loseStarter2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                loseStarter2.setVisibility(View.GONE);
                infoG2.setVisibility(View.GONE);

                final Random generateG2 = new Random();
                final int loadG2a = generateG2.nextInt(89) 10;
                final int loadG2b = generateG2.nextInt(89) 10;
                final int loadG2c = 0;
                final int loadG2d = 0;
                final TextView numbers = (TextView) findViewById(R.id.numbers);
                numbers.setText(loadG2a loadG2b);
                final EditText input2 = (EditText) findViewById(R.id.input2);
                if (true) {
                    input2.setOnKeyListener(new View.OnKeyListener() {
                        @Override
                        public boolean onKey(View v, int keyCode, KeyEvent event) {
                            if (event.getAction() == KeyEvent.ACTION_DOWN) {
                                switch (keyCode) {
                                    case KeyEvent.KEYCODE_ENTER:
                                        Editable answer2 = input2.getText();
                                        int finalAnswer2 = Integer.parseInt(String.valueOf(answer2));
                                        int finalLoadG2 = Integer.parseInt(String.valueOf(numbers.getText()));
                                        input2.getText().clear();

                                        if (finalAnswer2 == finalLoadG2) {
                                            score  ;
                                        }


                                        if (score>=0 amp;amp; score<=3){
                                            int loadG2a = generateG2.nextInt(89) 10;
                                            int loadG2b = generateG2.nextInt(89) 10;
                                            int loadG2c = 0;
                                            int loadG2d = 0;
                                            numbers.setText(loadG2a loadG2b);

                                        }

                                        if (score>=4 amp;amp; score<=6){
                                            int loadG2a = generateG2.nextInt(899) 100;
                                            int loadG2b = generateG2.nextInt(899) 100;
                                            int loadG2c = 0;
                                            int loadG2d = 0;
                                            numbers.setText(loadG2a loadG2b);
                                        }

                                        if (score>=7 amp;amp; score<=9){
                                            int loadG2a = generateG2.nextInt(89) 10;
                                            int loadG2b = generateG2.nextInt(89) 10;
                                            int loadG2c = generateG2.nextInt(89) 10;
                                            int loadG2d = 0;
                                            numbers.setText(loadG2a loadG2b loadG2c);
                                        }

                                        if (score>=10 amp;amp; score<=12){
                                            int loadG2a = generateG2.nextInt(899) 100;
                                            int loadG2b = generateG2.nextInt(899) 100;
                                            int loadG2c = generateG2.nextInt(899) 100;
                                            int loadG2d = 0;
                                            numbers.setText(loadG2a loadG2b loadG2c);
                                        }

                                        if (score>=13 amp;amp; score<=15){
                                            int loadG2a = generateG2.nextInt(89) 10;
                                            int loadG2b = generateG2.nextInt(89) 10;
                                            int loadG2c = generateG2.nextInt(89) 10;
                                            int loadG2d = generateG2.nextInt(89) 10;
                                            numbers.setText(loadG2a loadG2b loadG2c loadG2d);
                                        }

                                        if (score>=16 amp;amp; score<=18){
                                            int loadG2a = generateG2.nextInt(899) 100;
                                            int loadG2b = generateG2.nextInt(899) 100;
                                            int loadG2c = generateG2.nextInt(899) 100;
                                            int loadG2d = generateG2.nextInt(899) 100;
                                            numbers.setText(loadG2a loadG2b loadG2c loadG2d);
                                        }

                                        if (score>=19 amp;amp; score<=20){
                                            int loadG2a = generateG2.nextInt(8999) 1000;
                                            int loadG2b = generateG2.nextInt(8999) 1000;
                                            int loadG2c = generateG2.nextInt(8999) 1000;
                                            int loadG2d = 0;
                                            numbers.setText(loadG2a loadG2b loadG2c);
                                        }

                                        if (score>=21 amp;amp; score<=22){
                                            int loadG2a = generateG2.nextInt(8999) 1000;
                                            int loadG2b = generateG2.nextInt(8999) 1000;
                                            int loadG2c = generateG2.nextInt(8999) 1000;
                                            int loadG2d = generateG2.nextInt(8999) 1000;
                                            numbers.setText(loadG2a loadG2b loadG2c loadG2d);
                                        }

                                        if (score>=23){
                                            int loadG2a = generateG2.nextInt(89999) 10000;
                                            int loadG2b = generateG2.nextInt(89999) 10000;
                                            int loadG2c = generateG2.nextInt(89999) 10000;
                                            int loadG2d = generateG2.nextInt(89999) 10000;
                                            numbers.setText(loadG2a loadG2b loadG2c loadG2d);
                                        }


                                }
                            }

                            return false;
                        }
                    });
                }
  

Я был бы признателен всем, кто готов помочь мне решить эту проблему и запустить программу так, как задумано. Пожалуйста, не стесняйтесь заменять любой необходимый код. Заранее большое спасибо.

Комментарии:

1. В случае сбоев, пожалуйста, загрузите logcat, это помогает быстрее обнаружить проблему.

2. можете ли вы сказать нам, какое исключение вы получаете в консоли?

3. более того, похоже, что у вас есть дублирующий идентификатор для int loadG2a

Ответ №1:

 // here is int's (all other lines with int's must be also corrected)
numbers.setText(loadG2a loadG2b loadG2c loadG2d); 

// but must be String =)
numbers.setText(loadG2a loadG2b loadG2c loadG2d "");
  

Комментарии:

1. Спасибо, забыл об этом.