[Ajuda] Gerar função Randomica

21 respostas
V

Olá sou novo em java e gostaria de uma ajuda em um problema.

//Vetor com os numeros

String[] num = {1",“2”,“3”,“4”,“5”,“6”,“7”,“8”,“9”};

//Vetor contendo os operadores

String[] op = {"+","-","*","/"};

Tenho esses dois vetores que cobinados deve gerar expressões numericas aleatórias tipo:

1+2
2*5
7/9

Mas não sei como fazer alguém pode me ajudar?

21 Respostas

argentinaluiz

usa a funcao Math.random() ela te retorna numeros decimais entre [0,1[ (o 1 ta fora)

V

Ai que ta o problema ele teria que inserir em string.

argentinaluiz

String Conta=num[(int)Math.random()*10]+
op[(int)Math.random()*5]+
num[(int)Math.random()*10];

é isso entendeu?

V

Putss entendi sim…

Mas como eu chamo isso na tela denovo?
Desculpe as perguntas “bobas” mas é dificil quando se ta começando.

argentinaluiz

como assim chamar na tela de novo? Não entendi?

V

Preciso passar essa expressão concatenada ou seja pegar num1 99, +, num2 100
99+100

argentinaluiz

o código que ti passei a operação já está concatenada na String Conta!

V
//Vetor contendo os numeros

String[] num = {0,1,2,3,4,5,6,7,8,9};

//Vetor contendo os operadores

String[] op = {"+","-","*","/"};
String Conta=num[(int)Math.random()*10]+
    op[(int)Math.random()*5]+
    num[(int)Math.random()*10];

    System.out.println(Conta);
    System.out.println(op);
    System.out.println(num);

============
Retorna:

0+0
[Ljava.lang.String;@9931f5
[Ljava.lang.String;@19ee1ac

argentinaluiz

faz assim:

class numeroaleatorio
{

public static void main(String args[])

{

//Vetor contendo os numeros

String[] num = {0,1,2,3,4,5,6,7,8,9};

//Vetor contendo os operadores

String[] op = {"+","-","*","/"};
String Conta=num[(int)(Math.random()*10)]+op[(int)(Math.random()*5)]+num[(int)(Math.random()*10)];

System.out.println(Conta);

}

}
se voce mostrar um vetor na tela, ou seja, ou op ou num sem colocar os indices dos vetores vai mostrar esse valor estranho ai

V

opaaa… vlw deu certo agora.

Obrigado mesmo.

argentinaluiz

qualquer coisa estou por ai

Lavieri

Math.random() = sux!!

use

Random random = new Random();
        int arg1 = random.nextInt(10); //número randomico entre 0 e 9
        int arg2 = random.nextInt(10); //número randomico entre 0 e 9
        int oper = random.nextInt(4);  //número randomico entre 0 e 3

conhece o operador switch ??? ... é a forma melhor, para vc fazer a conta....

vou responder esse seu exercicio, sem suas matrizes ^^ ... ai vc pensa como responde-lo usando as matrizes... boa sorte!

import java.util.Random;

public class ContasRandomicas {
    public static void main(String[] args) {
        randomiza();
        randomiza();
    }
    public static String fazConta(int a, int b, int operador) {
        switch(operador) {                                   // vai imprimir
            case 0:  return a + " + " + b + " = " + (a + b); // a + b = conta
            case 1:  return a + " - " + b + " = " + (a - b); // a - b = conta
            case 2:  return a + " * " + b + " = " + (a * b); // a * b = conta
            case 3:  return a + " / " + b + " = " + (a / b); // a / b = conta
            default: return "operador inválido";
        }
    }

    private static Random random = new Random();
    public static void randomiza() {
        int arg1 = random.nextInt(10);
        int arg2 = random.nextInt(10);
        int oper = random.nextInt(4);
        System.out.println( fazConta(arg1, arg2, oper) );
    }
}

EDIT.:

Ps.: se vc tiver o azar, do "arg2" ser 0, e do "oper" ser 3, então vc terá uma ArithmeticException, pois a conta será ... N / 0 ... lançando a exceção de impossivel dividir por 0

"Exception in thread "main" java.lang.ArithmeticException: / by zero"

V

hehe funcionou das duas formas.

Mas não vai acontecer o erro do 0 porque eu não vou por o zero rsrs na realidade é só para um teste. Obrigado ai gente.

argentinaluiz

ei nepomuceno no código que ti passei em vez do Math.random()*5 coloque Math.random()*4!

V

Pronto, mas me diz uma coisa qual a diferença?

Se puderem mandar para o meu email os seus arquivos ia ser bom rs.

[email removido]

argentinaluiz

é porque Math.random()*5 gera numero aleatorios entre 0 e 4.
o seu vetor é 0 a 3 entao ia dar erro.

Math.random()*4 gera de 0 a 3.

entendeu?

argentinaluiz

que arquivos???

V

entendi…

o arquivo do aplicativo java que tu gerou para me ajudar.

argentinaluiz

control c control v:
class numeroaleatorio
{

public static void main(String args[])

{

//Vetor contendo os numeros

String[] num = {0,1,2,3,4,5,6,7,8,9};

//Vetor contendo os operadores

String[] op = {"+","-","*","/"};
String Conta=num[(int)(Math.random()*10)]+op[(int)(Math.random()*5)]+num[(int)(Math.random()*10)];

System.out.println(Conta);

System.out.println(op);

System.out.println(num);

}

}

V

Qual ide tu ta usando?

Lavieri

novamente posso falar, prefira os métodos de random, pois eles são mais legiveis, e vc não precisa fazer cast para transformalos em ints...

Random rnd = new Random();


op[(int)(Math.random()*4)]; //extremamente feio
op[rnd.nextInt(4)]; //muito mais legivel

e se possivel, n coloque o código que faz o random, dentro da matriz, pra ficar ainda mais legivel.

Random rnd = new Random();

int rdnIndex = rnd.nextInt(operation.length);

operation[rdnIndex]; //ainda mais super legivel ainda
Criado 28 de abril de 2009
Ultima resposta 29 de abr. de 2009
Respostas 21
Participantes 3