Initializer.java
public class Initializer{
private int givenInt;
private boolean match;
public Initializer(){}
public void initGame(){
givenInt = (int) (Math.random() * 100 + 1); // [1, 100]
match = false;
System.out.println("Eu já escolhi um número entre 1 e 100");
System.out.println("Agora tente adivinhar. Boa sorte! \n");
}
public boolean receiveGuess(int receiveGuess){
match = isGuessCorrect(receiveGuess);
return match;
}
public boolean isGuessCorrect(int playerGuess){
boolean correct = false;
if(playerGuess == givenInt){
System.out.println("Seu palpite " + playerGuess + " está correto!");
correct = true;
}else if(playerGuess > givenInt){
System.out.println("Seu palpite " + playerGuess + " é maior.");
}else if(playerGuess < givenInt){
System.out.println("Seu palpite " + playerGuess + " é menor.");
}
return correct;
}
}
Math.random()
Como a classe Initializer.java “pensa” em número entre 1 e 100? A variável giveInt é um valor arbitrário entre 1 e 100. Se precisarmos de um “valor arbitrário” podemos chamar um método com o nome gerador de número aleatório que retorna um número aleatório.
O Java fornece dois geradores de números aleatórios. Um é o método random() que pertence a classe Math; o outro é a classe Random que está no pacote java.util.
A classe Math fornece um grupo de funções, tais como, random(), abs() e max(), e tem muitos outros. O método random() dá um possível número entre (0.0, 1.0). isso significa que um gerador random() retorna um valor de 0.0 até 0.999…9 o qual inclui o valor 0.0 e exclui o valor 1.0.
Se pedirmos um número inteiro aleatório de menor valor 1 e máximo 100 (max = 100), então a declaração aDouble = (Math.random() * max) irá dar um valor possível de [0.0, (max-1).99…9].
Aplicando a operação “cast” para converter o aDouble para ser um inteiro anInt = (int)(aDouble), o resultado será um possível inteiro entre 0 e 99. E depois, adicione o mínimo valor (1) ao anInt, o resultado será um número inteiro entre 1 (min = 1) e 100 (max = 100).
anInt = (int)(Math.random() * max) + min;
Esse método funciona para esse caso. Mas se aplicarmos esse método a outros casos, o resultado pode não sair como esperado. Por exemplo, nós queremos um número inteiro entre 5 e 99.
Declaramos o mínimo (min = 5 ) e o máximo (max = 99). Mas, a equação nos dará um inteiro entre 5 e 103, e isso não queremos. Podemos corrigir isso da seguinte maneira:
randomInt = (int)(Math.random() * (max – min + 1)) + min;
randomInt = (int)(Math.random() * 95) + 5;
randomInt int [0, 94] + 5
randomInt int [5, 99] = [min, max]
Classe Random
Java também fornece outro gerador de número aleatório, a classe Random que está no pacote java.util, o qual tem mais métodos que podem gerar número aleatórios de diferentes tipos de dados.
No nosso caso, queremos um número inteiro com um valor entre [min, max]. Um desses métodos é o nextInt(int limite) (o valor limite precisa ser um número positivo) a classe Random irá retornar um inteiro entre [0, limite]. Vamos ver um exemplo:
Random ran = new java.util.Random();
randomInt = ran.nextInt(max – min +1) + min;
Fonte: Learning Java with Games





Deixe um comentário