Initializer.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
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