случайный оператор для математической викторины - PullRequest
0 голосов
/ 18 апреля 2020

Я пытаюсь сгенерировать случайные операторы, чтобы у случайных вопросов были случайные операторы, пожалуйста, помогите

public void generateNewAddQuestion () {
        Random rand = new Random();
        int a = rand.nextInt(21);
        int b = rand.nextInt(21);
        int c =0;

        sumTextView.setText(Integer.toString(a) + "+" + Integer.toString(b));
        locationOfCorrecAnswer = rand.nextInt(4);
        answers.clear();
        String[] operators = {"+", "-", "x", "/"};

        int incorrectAnswer;

        for (int i=0; i < 4; i++) {
            if (i == locationOfCorrecAnswer) {
                answers.add(a+b);
                sumTextView.setText(Integer.toString(a)+"+"+Integer.toString(b));
            }
            else {
                incorrectAnswer = rand.nextInt(41);
                while(incorrectAnswer == a+b) {
                    incorrectAnswer = rand.nextInt(41);
                }
                answers.add(incorrectAnswer);
            }
        }
        button2.setText(Integer.toString(answers.get(0)));
        button3.setText(Integer.toString(answers.get(1)));
        button4.setText(Integer.toString(answers.get(2)));
        button5.setText(Integer.toString(answers.get(3)));
    }

1 Ответ

0 голосов
/ 18 апреля 2020

Вам нужно использовать operators[rand.nextInt(4)], чтобы получить случайный оператор, например,

import java.util.Random;

public class Main {
    public static void main(String[] args) {
        String[] operators = { "+", "-", "x", "/" };
        Random rand = new Random();
        System.out.println(operators[rand.nextInt(4)]);
    }
}

Если вы выполните этот код, он будет печатать случайный оператор каждый раз.

[Обновить]

Вот как вам нужно использовать решение в вашей программе:

String[] operators = {"+", "-", "x", "/"};
int oprIndex = rand.nextInt(4);
sumTextView.setText(Integer.toString(a) + operators[oprIndex] + Integer.toString(b));

Позже в вашей программе вам нужно будет использовать oprIndex чтобы найти, какой оператор был установлен в sumTextView, и, соответственно, вы можете выполнить соответствующую арифметическую операцию c, например,

switch (operators[oprIndex]) {
case "+":
    System.out.println("Pocessing addition");
    break;
case "-":
    System.out.println("Pocessing subtraction");
    break;
case "x":
    System.out.println("Pocessing multiplication");
    break;
case "/":
    System.out.println("Pocessing division");
    break;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...