Java random!

Galera to estudando java nessas férias…
Eu peguei alguns exercicios pra fazer e surgiu uma duvida sobre aleatoriedade…Eis o problema:

Copa do Mundo Alienígena:
Implemente uma classe que modele um alienígena, com os seguintes atributos:
-Nome (String)
-Número de olhos (inteiro entre 0 e 10)
-Cor (Color Color.black, Color.green, Color.blue, etc.)
-Altura (double entre vinte centímetros ou dois metros e meio)
-Número de pernas (inteiro entre 1 e 4)
-Posição (String “zagueiro”, “meio campo”, “atacante”)
[color=red]
Implemente um construtor na classe acima para que sorteie as características do alienígena. A posição do alieníge[/color]

Como poderia implementar o construtor???

Note que Math.random() retorna sempre um número entre 0.0 (inclusive) e 1.0 (exclusive). Você precisa então fazer algumas contas para ajustar o valor para o que você precisa.

Por exemplo, para pegar um número entre 1 e 4, pegue o valor retornado por Math.random(), multiplique por (4 - 1 + 1), e some 1.

Para pegar um número entre 0 e 10, pegue o valor retornado por Math.random(), multiplique por (10 - 0 + 1), e some 0.

Para pegar um número entre 0.20 e 2.5, pegue o valor retornado por Math.random(), multiplique por (2.5 - 0.20), e some 0.20.

Você entendeu a conta que tem de fazer? Acho que você é esperto e entendeu direitinho a conta a ser feita.

import java.awt.Color;

enum Posicao {
	SAGUEIRO,MEIOCAMPO,ATACANTE;
}

public class Alienigena {
	
	private String nome;
	private Integer olhos;
	private Color cor;
	private Double altura;
	private Integer pernas;
	private Posicao posicao;
	
	public Alienigena() {
		int olhos = (int) Math.random() * 10;
		this.setOlhos(olhos);
	}
	
	

	public Alienigena(Double altura, Color cor, String nome, Integer olhos,
			Integer pernas, Posicao posicao) {
		this.setNome(nome);
		this.setOlhos(olhos);
		this.setCor(cor);
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public Integer getOlhos() {
		return olhos;
	}

	public void setOlhos(Integer olhos) {
		if(!(olhos>=0 && olhos<=10)){
			olhos = 0;
		}
		this.olhos = olhos;
	}

	public Color getCor() {
		return cor;
	}

	public void setCor(Color cor) {
		if(cor == null){
			cor = Color.black;
		}
		this.cor = cor;
	}

	public Double getAltura() {
		return altura;
	}

	public void setAltura(Double altura) {
		this.altura = altura;
	}

	public Integer getPernas() {
		return pernas;
	}

	public void setPernas(Integer pernas) {
		this.pernas = pernas;
	}

	public Posicao getPosicao() {
		return posicao;
	}

	public void setPosicao(Posicao posicao) {
		this.posicao = posicao;
	}
}

thingol o problema nao eh usar o random em si…o problema eh como fazer Strings serem aleatorias???..pois ateh onde eu sei MATH.RANDOM trabalha com numeros e nao com strings

Sim senhor, mas você pode pôr as strings dentro de um array.

Digamos que você tenha 3 strings (“zagueiro”, “meio campo”, “atacante”).
Você cria um array de 3 strings, e gera um número aleatório que vai de 0 até 2 (ou seja, você pega Math.random e multiplica o resultado por 3; não precisa somar nada. Aí você converte o valor para um inteiro).
Aí você pega a string do array que corresponde a esse número de 0 até 2. OK?

A mesma coisa vale para a enum; você pode criar um array de N enums (Color.black etc.).

Ah eh realmente…nem tinha me lembrado de arrays :x Vou tentar fazer…

E mathiasnw vlw pelo codigo, vou dar uma olhada aki…

Vlw pessoal, depois eu volto pra falar se consegui ou se tive duvidas…

Ontem estava atrasado e acabei nao fazendo a parte principal do codigo segue agora resumindo.

import java.awt.Color;

enum Posicao {
	SAGUEIRO(1),MEIOCAMPO(2),ATACANTE(3);
	private Integer n;
	
	private Posicao(int n) {
		n = new Integer(n);
	}
	
	public static Posicao getSorted() {
		Posicao[] array = Posicao.values();
		int nSorted = (int) Math.random() * (array.length-1);
		return array[nSorted];
	}
}

public class Alienigena {
	
	private String nome;
	private Integer olhos;
	private Color cor;
	private Double altura;
	private Integer pernas;
	private Posicao posicao;
	
	public Alienigena() {
		int olhos = (int) Math.random() * 10;
		this.setOlhos(olhos);
		this.setPosicao(Posicao.getSorted());
	}
	
	

	public Alienigena(Double altura, Color cor, String nome, Integer olhos,
			Integer pernas, Posicao posicao) {
		this.setOlhos(olhos);
		this.setCor(cor);
	}
	
	public void setPosicao(Posicao posicao) {
		this.posicao = posicao;
	}

	public void setOlhos(Integer olhos) {
		if(!(olhos>=0 && olhos<=10)){
			olhos = 0;
		}
		this.olhos = olhos;
	}

	public void setCor(Color cor) {
		if(cor == null){
			cor = Color.black;
		}
		this.cor = cor;
	}
}

Cara fiz dessa maneira não é a mais correta, mas você pode melhorar ela ^^

flws :twisted:

import java.util.List;
import java.util.Random;

public class alienigina {
public static String[] nome = { “Hataki”, “Izume”, “Nagto” };
public static int numeroOlhos = 4;
public static String[] cor = { “preto”, “verde”, “azul” };
public double alturaMax = 2.40;
public double alturaMin = 0.20;

public void randomicoNome(String[] novo) {
	int rand = 0;
	String alienigina = null;
	for (int i = 0; i < novo.length + 1; i++) {
		rand = (int) (Math.random() * i);
		alienigina = novo[rand];
	}
	System.out.println(alienigina);
}

public void randomicoNumero(double maximo , double minimo) {
	double loteria = 0.0;
	for (double i = minimo; i < maximo; i++) {
		loteria = Math.random() * i;
		System.out.println(Math.round(loteria));
	}
}
public void randomicoOlhos(int novo) {
	double loteria = 0.0;
	for (int i = 1; i < novo; i++) {
		loteria = Math.random() * i;			
	}
	System.out.println(Math.round(loteria));
}

public static void main(String[] args) {
	alienigina a = new alienigina();
	a.randomicoNome(nome);
	a.randomicoNome(cor);
	a.randomicoOlhos(numeroOlhos);
}

}