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 ?
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;
}
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 ?
//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);
}
}
[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.