daniil_tipikin
@daniil_tipikin

Как вызывать метод в Java определенное количество раз?

Если коротко то программа должна выводить пример, проверять введенный пользователем ответ (после нажатия на кнопку "проверить" ), затем выдавать результат проверки ("Верно/ошибка") и затем выдавать новый пример. И так по кругу, в идеале пользователь должен сам указывать количество примеров.

Мой код:
package com.example.levelup;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class Game extends AppCompatActivity {


    private TextView prim, snoska;
    private EditText otvet;
    private Button proverka;

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


        prim = findViewById(R.id.prim);             //Сам пример
        otvet = findViewById(R.id.otvet);           //Поле для ответа
        snoska = findViewById(R.id.snoska);         //Текст под примером, где будет отображаться "верно/ошибка"
        proverka = findViewById(R.id.proverka);     //Кнопка - проверка примера

        //Создаем 1-й пример (далее со второго примеры должны создаваться при помощи отдельного метода, знаю колхоз, если можно как-то иначе буду благодарен за подсказку)


            int a = (int) (Math.random() * 10);
            int b = (int) (Math.random() * 10);
            int c = a + b;
            int kol = 0;


            //Выводим его и записываем ответ пользователя
            prim.setText(a + " + " + b + " = ?");


            //Проверяем ТОЛЬКО после нажатия на кнопку
            proverka.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    int otv = Integer.parseInt(otvet.getText().toString());
                    if (c == otv) {
                        snoska.setText("Good!");
                        for (int j = 0; j<5; j++) {
                            sledprim();
                        }
                    } else {
                        snoska.setText("No...");
                        for (int j = 0; j<5; j++) {
                            sledprim();
                        }
                        return;
                    }
                }

            });


    }

    
    public void sledprim() {
        int a1 = (int) (Math.random() * 10);
        int b1 = (int) (Math.random() * 10);
        int c1 = a1 + b1;
        int kol1 = 0;


        //Выводим его и записываем ответ пользователя
        prim.setText(a1 + " + " + b1 + " = ?");


        //Проверяем ТОЛЬКО после нажатия на кнопку
        proverka.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                int otv1 = Integer.parseInt(otvet.getText().toString());
                if (c1 == otv1) {
                    snoska.setText("Good!");
                } else {
                    snoska.setText("No...");
                }
                return;
            }

        });
    }

    //Возврат в меню:
    public void Game_nazad(View view){
        Intent intent = new Intent(this,MainActivity.class);
        startActivity(intent);
    }

}


Программа выдает только 2 примера (вместо 5), и то, потому что я вручную вызвал 2 раза один и тот же метод (назвав их по-разному). И даже не знаю что мне делать дальше, поэтому буду рад за помощь, а также за советы что почитать/посмотреть начинающему по данной теме.
  • Вопрос задан
  • 363 просмотра
Пригласить эксперта
Ответы на вопрос 2
mayton2019
@mayton2019 Куратор тега Java
Bigdata Engineer
Предположительно ты скомпилировал программу но забыл задеплоить и поэтому видишь старое значение итераций.

Используй логгирование как здесь пишут https://developer.android.com/studio/debug/logcat чтобы подтвердить что твой метод действительно вызван 5 раз.
Ответ написан
Комментировать
402d
@402d
начинал с бейсика на УКНЦ в 1988
Должна быть переменная ЧИСЛО Вопросов
Ещё одна ТЕКУЩИЙ.
Пока текущий меньше ЧИСЛО, то +1 и показать следующий.

Прочитай про жизненный цикл активити.
И про то как сохранять переменные . Савестейт.

Без этого при повороте экрана все будет обнуляться
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы