Simulaçao de Bingo, pequeno probleminha, ajuda ae por favor!

Bom dia, to com um pequeno probleminha aqui pra terminar um trabalho da faculdade… professor passou um trabalho que é simulação de bingo eu consegui fazer as classes, os métodos e até quebrei a cabeça e fiz um método recursivo para checar números gerados repetidos nas cartelas, mas eu ja quebrei a cabeça aqui e não consegui fazer o método que checa as cartelas procurando pela “pedra” da vez.

O Bingo é 5000 mil cartelas com 15 dezenas cada cartela, eu coloquei o tamanho de cada cartela de 16 para poder controlar as “pedras” que tiver na cartela, somando +1 na posição 16 da matriz e quando tiver com o valor 15 significa que a cartela é a vencedora…

Adjuda ae gente preciso muito terminar esse trabalho. :cry:

import java.util.*;

public class Bingo {	
	private int cartelas[][] = new int[5000][16];
	private int globo[] = new int[90];
	private int n;
			
	void geraJogoBingo() {		
		for (int i = 0; i < cartelas.length; i++) {
			for (int j = 0; j < 15; j++) {				
				n = (int) (1+ Math.random() * 90);
				cartelas[i][j] = checaRepetido(n,i);
			}			
		}		
	}
	
	void ordenaJogoBingo() {
		for ( int i = 0; i < cartelas.length; i++) {
			Arrays.sort(cartelas[i]);
		}					
	}	
		
	int checaRepetido(int n,int i) {		
		for (int j = 0; j < cartelas[i].length; j++) {
			if (n == cartelas[i][j]) {
				return checaRepetido(n = (int) (1+ Math.random() * 90),i);		
			}
		} return n;
	}
	
	int checaRepetido(int n) {		
		for (int i = 0; i < globo.length; i++) {
			if (n == globo[i]) {
				return checaRepetido(n = (int) (1+ Math.random() * 90));		
			}
		} return n;
	}
	
	void simularBingo() {
		// INICIALIZA O GLOBO
		for (int i = 0; i < 90; i++) {
			n = (int) (1+ Math.random() * 90);
			globo[i] = checaRepetido(n);			
		}		
		
                // ESSA PARTE AQUI EU TENTEI DE TODO JEITO PARA CHECAR SE A CARTELA TEM A PEDRA CHAMADA E ADICIONAR +1 A POSIÇÃO 16 DA MATRIZ
		for (int k = 0; k < globo.length; k++) {			
			for (int i = 0; i < cartelas.length; i++) {
				if (cartelas[i][0] == 15) break;
				
				for (int j = 0; j < cartelas[i].length; j++) {
					if (globo[k] == cartelas[i][j]) cartelas[i][j] += 1;			
				}
			}			
		}		
	}			
}

Lanz, não testei aqui, mas acho q o erro ta na linha

if (globo[k] == cartelas[i][j]) cartelas[i][j] += 1;              

Acho que o trecho do seu código deveria ficar assim:

for (int k = 0; k < globo.length; k++) {           
    for (int i = 0; i < cartelas.length; i++) {  
        if (cartelas[i][0] == 15) break;  
        
        for (int j = 0; j < cartelas[i].length; j++) {  
            if (globo[k] == cartelas[i][j]) cartelas[i][0] += 1;              
        }  
    }             
}

Mais um detalhe q eu percebi agora, no método geraJogoBingo vc está deixando a posição 15 vazia e no método simulaBingo vc utiliza a posição 0 para verificar se a cartela está completa. Iguale os 2 método para não dar problema.

Então, a posição 15 vazia é justamente a que era para ser colocada a contagem de pedras já marcadas, mas quando eu faço a ordenação Arrays.sort(cartela[i]) ele coloca a posição 15 que é o ZERO la no começo do vetor por isso eu estou ultilizando a posição 0 para colocar o número de pedras já marcadas.

O código que você corrigiu realmente funciona, mas tem um pequeno problema quando ele acha alguma cartela que é preenchida toda não sei por que, mas ele não para de sortear as pedras e assim mais de uma cartela (não igual) faz 15 pontos coisa que não era para está acontecendo… acho que tem a ver com a posição do break, mas eu já tentei de tudo aqui até mudar a forma de como fazer essa checagem, mas não consegui…

Ajuda ae

Sobre ele não parar quado encontra a primeira cartela preenchida, se é que entendi seu código direito, eu acho q vc esta sorteando todos os números antes de verificar as cartelas. Tente verificar as cartelas a cada número sorteado.