//Programa teste
import javax.swing.JOptionPane;
public class Teste {
public static void main(String[] args) throws Exception {
MegaSena f;
System.out.println("MEGA SENA");
int quantidade = Integer.parseInt(JOptionPane.showInputDialog("Escolha a quantidade de jogos a serem gerados"));
f = new MegaSena();
f.GeraValores(quantidade);
f.MostrarValoresGerados();
}
}
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JOptionPane;
public class MegaSena {
List<Integer> lista = new ArrayList<Integer>();
BufferedWriter mega;
MegaSena() throws Exception {
String nome = JOptionPane
.showInputDialog("Digite o nome do arquivo de gravação.\nExemplo: loto.txt");
mega = new BufferedWriter(new FileWriter(nome));
}
public void GeraValores(int quantidade) throws Exception {
for (int i = 0; i < quantidade; i++) {
mega.write("JOGO " + (i + 1) + " =");
for (int j = 0; j < 6; j++) {
int r = (int) (1 + (Math.random() * 60));
while (lista.contains(r))
r = (int) (1 + (Math.random() * 60));
lista.add(r);
mega.write(" " + r);
}
lista.removeAll(lista);
mega.write("\n");
}
mega.close();
JOptionPane.showMessageDialog(null, " Jogos gravados com sucesso! ");
}
public void MostrarValoresGerados() throws Exception {
String nome = JOptionPane
.showInputDialog("Digite o nome do arquivo onde foram gravados os jogos feitos.\nExemplo: mega.txt");
BufferedReader arquivo = new BufferedReader(new FileReader(nome));
String linha = arquivo.readLine();
while (linha != null) {
System.out.println(linha);
linha = arquivo.readLine();
}
arquivo.close();
}
}
Ok pessoal, vou usar os exemplos fornecidos para resolver o exercício aqui. Se ainda der errado eu tenho uma forca aqui comigo… Agradeços a todos do tópico!!
Opa, e8 acabei de fazer esse mesmo exercicio na faculdade …
eu fiz um while que induz a fazer o for do vetor até que todos os espaços do vetor estejam diferentes…
ae eu acabei de testar e tah funcionando sim, se vc colocar um while para quando ele der os valores não tem como ele fugir …
ele tem de fazer todos os numeros iguais para sair da repetição
[quote=guilherme marques]ae eu acabei de testar e tah funcionando sim, se vc colocar um while para quando ele der os valores não tem como ele fugir …
ele tem de fazer todos os numeros iguais para sair da repetição[/quote]
entendi, mas se fosse um vetor de 1000 posições estria perdido fazendo desta forma…
Velho ,se vc btivesse 1000 posições em um array para checar, você só poderia fazer isso de dois jeitos: Ou criando uma espécie de índice para analisar ou um controle mais inteligente (o meu eu perco processamento, pq eu nao estou pesquisando nas posições que se abrem, estou pesquisando em todas mesmo quando só tem um elemento no array. Vou ajeitar isso.
Bom pessoal, agradeço a todos por postarem aqui, sei que tenho muita coisa para ver e aprender, com certeza este site esta fazendo a diferença no meu estudo em JAVA. Quando minha bagagem cultural sobre JAVA for maior, também com certeza irei ajudar e repassar o conhecimento!
Mais uma vez obrigado!
[code]public class MegaSena
{
public static void main(String[] args)
{
Sorteio sorteio = new Sorteio(60);
for (int i = 0; i < 6; i++)
sorteio.sortear();
System.out.println(sorteio.quantidadeSorteada()
+ " números foram sorteados: "
+ sorteio.getSorteados());
}
public class Sorteio
{
private final int MAXIMO;
private Random rand;
private SortedSet sorteados;
public Sorteio(int tamanho)
{
if (tamanho > 0)
{
MAXIMO = tamanho;
rand = new Random();
sorteados = new TreeSet<Integer>();
} else
throw new IllegalArgumentException("Tamanho deve ser maior que zero.");
}
public int sortear()
{
int numero = 0;
if (quantidadeSorteada() < MAXIMO)
{
do
{
numero = (int) (rand.nextFloat() * MAXIMO) + 1;
}
while (sorteados.contains(numero));
sorteados.add(numero);
}
return numero;
}
public SortedSet<Integer> getSorteados()
{
return Collections.unmodifiableSortedSet(sorteados);
}
public int quantidadeSorteada()
{
return sorteados.size();
}
[code]private static boolean temRepetido(int[] num) {
for (int i = 0; i < num.length - 1; i++) {
for (int j = i + 1; j < num.length; j++) {
if (num[i] == num[j]) {
return true;
}
}
}
return false;
}
[/code]
implemente esse método e faça a chamada dele da seguinte forma :
[code]int[] num = new int[6];
do {
método para sortear os números aleatórios (num);
} while (temRepetido(num));[/code]
[b]Qualquer dúvida poste ae cara, e lembre - se, mesmo sabendo que existe Collection Framework, se quer aprender arrays, tente fazer exemplos do tipo, vetores de ordenação, bubble sort, comparação de valores de indíce de vetores, e assim por diante …