Programa para ensinar aluno do ensino fundamental à aprender multiplicação. [RESOLVIDO]

Estou desenvolvendo um programa simples para ensinar o aluno à aprender multiplicação. Vejamos o código:

//exApp4.java
//Programa para ensinar um estudando do ensino fundamental à aprender multiplicação

import java.util.Random;
public class exApp4 {
	
	Random randomNumbers = new Random();
	private int die1;
	private int die2;
    
	//método para fazer a pergunta ao usuário
	public void tech()
	{
		randomNumbers(); //chama o método para gerar números aleatórios para fazer a multiplicação.
		System.out.printf("How much is %d times %d ?\n",die1,die2);
		
	}
	//método para gerar números aleatórios
	public void randomNumbers()
	{
		die1 = 1 + randomNumbers.nextInt(10);
		die2 = 1 + randomNumbers.nextInt(10);
		
	}
	
	


}

Utilizei um objeto random para trocar os números da seguinte forma: O usuário digita a resposta, caso estiver correta, perguntar novamente. Senão, fica fazendo a mesma pergunta repetidamente.
A questão, é como vou saber se o usuário digitou a resposta correta, sendo que os números são aleatórios ?

Aguardo resposta…

Obrigado!

Jovem,

Você deve armazenar o numero aleatorio em uma variavel auxiliar. Depois é só comparar o valor digitado pelo usuário com o da variavel.

abs,

Simples… depois que usuário informar a resposta, vc pega o que ele digitou e transforma num inteiro… depois faz um método corrige. O Método retorna true se a resposta estiver correta ou false se estiver errado…daí conforme o retorno do método vc repete a questão ou chama o seu random denovo para gerar novos números



public boolean corrige(int resposta){
       if ((die1*die2) == resposta)
           return true;
       else 
      return false;

}

No caso nem precisa armazenar os números aleatórios em uma variável auxiliar, pq vc já está salvando os numeros nas variaveis die1 e die2

No caso você só precisa comparar o número digitado pelo usuário com a multiplicação das variáveis die1 x die2

Ficaria mais ou menos assim

int respostaAluno = Dados do teclado;

if(respostaAluno == (die1 * die2)){

System.out.println("RESPOSTA CORRETA");
}else{

System.out.println("RESPOSTA ERRADA");

}

É isso ae

Valew

Olá,

Consigui fazer o programa com a ajuda de vocês, é simples, mas funcional. Obrigado mais uma vez a todos do GUJ, sem exceção.

Vejamos o código:


//exApp4.java
//Programa para ensinar um estudando do ensino fundamental à aprender multiplicação

import java.util.Random;
import java.util.Scanner;
public class exApp4 {
	
	Random randomNumbers = new Random();
	Scanner input = new Scanner(System.in);
	
	private int die1;
	private int die2;
    private int reply;
	
	//método para fazer a pergunta ao usuário
	public void tech()
	{
		randomNumbers(); //chama o método para gerar números aleatórios para fazer a multiplicação.
		System.out.printf("How much is %d times %d ?\n",die1,die2);
		reply = input.nextInt();
		correct();
	}
	
	public void correct()
	{
		if(reply == (die1 * die2))
		{
			System.out.print("Very Good!");
		}else
			System.out.print("No. Please try again.");
		
	}
	//método para gerar números aleatórios
	public void randomNumbers()
	{
		die1 = 1 + randomNumbers.nextInt(10);
		die2 = 1 + randomNumbers.nextInt(10);
		
	}
	
	


}

No caso, se o usuário responder a resposta errada, ele pergunta novamente fazendo a mesma, mas está sendo números aleatórios. Nesse caso, o que eu faço ?

Obrigado mais uma vez…

Fala brow,

Chama randomNumbers() no construtor, e quando o cara acertar.

PS: Ta nos esteites brow? Se for ensinar multiplicacao pra criancada em ingles, vao ficar meio perdidos
(Isso se for pra criancas =])

Abraco;

Não consigui compreender.
Poderia ser mais claro ?
Abraço!

//exApp4.java
//Programa para ensinar um estudando do ensino fundamental à aprender multiplicação

import java.util.Random;
import java.util.Scanner;
public class exApp4 {

	Random randomNumbers = new Random();
	Scanner input = new Scanner(System.in);
	
	private int die1;
	private int die2;
       private int reply;
	
        // [KENNETH] Esse eh o construtor, vai ser chamado qdo vc instanciar este objeto.
        // vai funcionar como uma inicializacao...
        public exApp4 {               
               randomNumbers();
        }	

	//método para fazer a pergunta ao usuário
	public void tech()
	{
		// [KENNETH]  Pus em comentario, pra que permanecam os mesmo nros ate o cara acertar.
                // randomNumbers(); //chama o método para gerar números aleatórios para fazer a multiplicação.
		System.out.printf("How much is %d times %d ?\n",die1,die2);
		reply = input.nextInt();
		correct();
	}
	
	public void correct()
	{
		if(reply == (die1 * die2))
		{
			System.out.print("Very Good!");
                        //[KENNETH]  Agora, o cara acertou, chamamos para gerar dois novos numeros...
                        randomNumbers();
		}else
			System.out.print("No. Please try again.");
		
	}
	//método para gerar números aleatórios
	public void randomNumbers()
	{
		die1 = 1 + randomNumbers.nextInt(10);
		die2 = 1 + randomNumbers.nextInt(10);
		
	}
}

Se eu entendi o que voce quer, acho que funciona.

Abraco.
:smiley:

Fala Kenneth!

Isso eu já sei. Mas, não é essa a dúvida.
Veja bem, se o usuário errou a multiplicação, ex: 2 x 4, perguntar novamente a mesma pergunta, 2 x 4.

Abraços!

Pelo que voce falou acima, pareceu que tinha conseguido fazer isso.

Bom, voce vai precisar de um laco.
Algo como

sorteia();
enquanto <alguma condicao>:
     leNumerosUsuario();
     se acertou
          print "parabens";
          sorteia();
     senao print "tente novamente";
fim-enquanto;

Abraco.

No caso, se o usuário errar a conta proposta pra ele, deve retornar dizendo a mesma pergunta que ele errou, até acertar.

Com o while é possível, certo ?

Aham
:smiley:

	public void correct()
	{
		while(reply == (die1 * die2))
		{
			if(reply == (die1 * die2))
				{
				  System.out.print("Very good!");
				}else{
					System.out.print("No. Please try again.");
					
		}
			reply++;
	}

Veja… quando digito errado, ele não pergunta novamente. O que há ?

Fala brow,

Do jeito que esta, voce nao pergunta nem quando erra, nem quando acerta.
Nao esta lendo a entrada do usuario. Isso eh feito por esta linha:

reply = input.nextInt(); 

E corrija seu while, pois so entrara se o cara acertar.

Abraco.

[code]//exApp4.java
//Programa para ensinar um estudando do ensino fundamental à aprender multiplicação

import java.util.Random;
import java.util.Scanner;
public class exApp4 {

Random randomNumbers = new Random();
Scanner input = new Scanner(System.in);

private int die1;
private int die2;
   private int reply;

    // [KENNETH] Esse eh o construtor, vai ser chamado qdo vc instanciar este objeto.
    // vai funcionar como uma inicializacao...
    public exApp4 {      
           randomNumbers(); //chama o método para gerar números aleatórios para fazer a multiplicação.         
           tech();
    }	

//método para fazer a pergunta ao usuário
public void tech()
{                
	System.out.printf("How much is %d times %d ?\n",die1,die2);
	reply = input.nextInt();
	correct();
}

public void correct()
{
	if(reply == (die1 * die2))
	{
		System.out.print("Very Good!");
                    //[KENNETH]  Agora, o cara acertou, chamamos para gerar dois novos numeros...
                    randomNumbers();
                    tech(); //Começa tudo denovo mas sorteando novos números
	}else
		System.out.print("No. Please try again.");
                    tech(); //Começa denovo com os números atuais
	
}

//método para gerar números aleatórios
public void randomNumbers()
{
	die1 = 1 + randomNumbers.nextInt(10);
	die2 = 1 + randomNumbers.nextInt(10);
	
}

}
[/code]

Fiz umas adaptações e testei aqui está funcionando conforme você queria, porém não há uma parada, então você deve definir um critério para parada tipo, quantidade de erros ou acertos.

Obrigado a todos!