Tabuada aleatoria

Colegas, eu preciso fazer um tabuada que apareça aleatoriamente, e mostre se o usuario acertou ou errou, eu so consigo faze-la pela estrutura do for e pelo o Scaner, ( o usuaria digitando o resultado vai aparecendo).
Alguem pode me ajuda sobre isso? deu pra explica?

Você quer armazenar todos os números digitados pelo usuário pra depois dizer se acertou tudo ou não é isso?

Algo assim?

2x1 = usuario...
2x2 = usuario...
2x3 = usuario...
...

Veja seus acertos:

2x1 = 2 (acertou!)
2x2 = 5 (errou!)
2x3 = 6 (acertou!)
...

Se sim, sabe usar arrays ou listas para armazenar os valores digitados?

1 curtida

Você pode usar uma List de uma classe que cria uma tabuada padrão com o que deve ser calculado e a resposta.

A partir disso você pode usar um random para gerar a tabuada para o usuário de forma aleatória e pegar as respostas dele em uma lista, a partir disso você compara o resultado da lista da tabuada original com a tabuada respondida pelo usuário e exibe o que ele acertou e o que errou.

Estou sem tempo agora, de uma pesquisada e tente escrever algum código.
Se mais tarde você não conseguir faço um exemplo pra você seguir.

é . isso mesmo,=estou tentando fazer aqui , mais não estou conseguindo

int numero1 = obterNumeroAleatorio();
int numero2 = obterNumeroAleatorio();
int resultadoEsperado = numero1 * numero2;

System.out.printf("Digite o resultado da seguinte multiplicação%n  %d x %d = ", numero1, numero2);
int respostaUsuario = lerNumeroInteiro();

if (respostaUsuario == resultadoEsperado) {
    System.out.printf("Resposta correta!%n");
} else {
    System.out.printf("Resposta errada!%n  %d x %d = %d", numero1, numero2, resultadoEsperado);
}

vou dar uma pesquisada aqui , porque fugiu da mente a sintaxe , vou da uma estudada aqui

não consegui fazer desse jeito ai staroski,consegui fazer de uma maneira aqui , mas da dando erro ,
1 - não esta colocando os numeros na tela
2 - não esta comparando a resposta do usuario com a respstaEsperada. ele ja da a resposta antes de comparar
private void okActionPerformed(java.awt.event.ActionEvent evt) {
Random rand = new Random();
int numero1 = rand.nextInt(2)+2 ;
int numero2 = rand.nextInt(10)+2 ;
telaDeApresantacao.setText(numero1 +“x”+ numero2);
int resultadoEsperado = numero1 * numero2; //deixar oculto

int respUsuario =  Integer.parseInt(respostaUsuario.getText());

if ( respUsuario == resultadoEsperado) {
    System.out.printf("Resposta correta!%n");
} else {
    System.out.printf("Resposta errada!%n  %d x %d = %d", numero1, numero2, resultadoEsperado);

}
}
e depois vou tentar pegar as resposta erradas e mostrar na tela ,

Você não falou que a aplicação precisava ter interface gráfica de usuário.

Vou ser bonzinho, taí:

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.util.Random;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingConstants;

@SuppressWarnings("serial")
public class TelaTabuadaAleatoria extends JFrame {

    public static void main(String[] args) {
        try {
            TelaTabuadaAleatoria janela = new TelaTabuadaAleatoria();
            janela.setDefaultCloseOperation(EXIT_ON_CLOSE);
            janela.setLocationRelativeTo(null);
            janela.setVisible(true);
        } catch (Throwable t) {
            t.printStackTrace();
        }
    }

    private JLabel jLabelOperacao;
    private JTextField jTextFieldResultado;
    private int resultadoEsperado;

    public TelaTabuadaAleatoria() {
        super("Tabuada aleatória");
        montarLayout();
        gerarNovaOperacao();
    }

    private void apresentaMensagem(String mensagem) {
        JOptionPane.showMessageDialog(this, mensagem, "Aviso", JOptionPane.PLAIN_MESSAGE);
        focarCampoResultado();
    }

    private void conferirResultado() {
        String texto = jTextFieldResultado.getText();
        if (texto == null || (texto = texto.trim()).isEmpty()) {
            apresentaMensagem("Informe o resultado");
            return;
        }
        int resultadoDigitado;
        try {
            resultadoDigitado = Integer.parseInt(texto);
        } catch (NumberFormatException e) {
            apresentaMensagem("\"" + texto + "\" não é um número válido!");
            return;
        }
        String mensagem;
        if (resultadoDigitado == resultadoEsperado) {
            mensagem = "CERTO!\n" + jLabelOperacao.getText() + resultadoDigitado;
        } else {
            mensagem = "ERRADO!\nVocê digitou " + resultadoDigitado + " mas\n" + jLabelOperacao.getText() + resultadoEsperado;
        }
        apresentaMensagem(mensagem);
        gerarNovaOperacao();
    }

    private void focarCampoResultado() {
        jTextFieldResultado.setText("");
        jTextFieldResultado.requestFocus();
    }

    private void gerarNovaOperacao() {
        Random random = new Random();
        int numero1 = random.nextInt(10);
        int numero2 = random.nextInt(10);
        resultadoEsperado = numero1 * numero2;
        jLabelOperacao.setText(numero1 + " X " + numero2 + " = ");
        focarCampoResultado();
    }

    private void montarLayout() {
        Container painelPrincipal = getContentPane();
        painelPrincipal.setLayout(new BorderLayout());

        painelPrincipal.add(new JLabel("Operação:"), BorderLayout.NORTH);

        jLabelOperacao = new JLabel();
        jLabelOperacao.setHorizontalAlignment(SwingConstants.CENTER);
        jLabelOperacao.setPreferredSize(new Dimension(150, 30));
        Font fonte = jLabelOperacao.getFont();
        fonte = fonte.deriveFont(20.0f);
        jLabelOperacao.setFont(fonte);

        jTextFieldResultado = new JTextField();
        jTextFieldResultado.setHorizontalAlignment(SwingConstants.RIGHT);
        jTextFieldResultado.setPreferredSize(new Dimension(100, 30));

        JPanel painelOperacao = new JPanel(new FlowLayout(FlowLayout.CENTER));
        painelOperacao.add(jLabelOperacao);
        painelOperacao.add(jTextFieldResultado);

        painelPrincipal.add(painelOperacao, BorderLayout.CENTER);

        JButton botaoGerar = new JButton("Nova operação");
        botaoGerar.addActionListener(event -> gerarNovaOperacao());

        JButton botaoConferir = new JButton("Conferir resultado");
        botaoConferir.addActionListener(event -> conferirResultado());

        JPanel painelBotoes = new JPanel(new FlowLayout(FlowLayout.RIGHT));
        painelBotoes.add(botaoGerar);
        painelBotoes.add(botaoConferir);

        painelPrincipal.add(painelBotoes, BorderLayout.SOUTH);

        setSize(480, 240);
    }
}