Dúvida com varredura de arrays

3 respostas
S

Boa noite caros,

Na verdade não é bem uma dúvida, e sim um pedido de opinião, eu como iniciante, gostaria de saber se existe uma solução mais elegante para meu método abaixo. Ele recebe um array 2d de Bytes com

//... meus outros metodos e variaveis declaradas....


VerificaRasura(res); // res é um array 2d : res[12][36] 


public void VerificaRasura(Byte[][] valor) {

    for(int x = 0; x < valor.length; x++){  //percorendo a primeira dimensão do array, no caso 12 posições
       for(int y = 0; y < valor[x].length; y++){ //percorrendo a segunda dimensão, no caso 36 posições.

              
}
}
}

Muito bem, eu preciso a cada verificação das 36 posições (2º for), a cada 6 posições percorridas verificar se não há valores repetidos, ou seja esse array é preenchido somente com ‘0’ e ‘1’, e eu não posso ter ‘1’ repetidos a cada 6 posições do array ex:

Para ficar mais claro, esse array representa 12 quadrados com 36 campos para votação, eu divido esses 36 em 6 linhas, e na mesma linha não pode haver 2 votos. Esta é a veficação que preciso fazer.

0 0 0 0 0 1
0 0 0 0 1 0
0 1 0 0 0 0
0 0 0 0 1 0
0 0 0 0 0 0
0 0 0 0 1 1 <— linha rasurada, existe 2 votos 1.

Eu consegui fazer algo que me atendesse, colocando 6 for encadeados, mas eu acho que não ficou nada elegante, e como eu sou iniciante, resolvi postar aqui na esperança de alguém conhecer uma forma mais “robusta”. Desculpem se ficou grande de mais para ler… espero que fique fácil de entender minha dúvida… abraços!

3 Respostas

P

Você pode checar se o indice é multiplo de 6, algo como
ps. se você não quer que o primeiro indice seja 1 troque o for para começar com 1, 0 é multiplo de 6

for(int x = 1; x <= valor.length; x++){  //percorendo a primeira dimensão do array, no caso 12 posições  
   for(int y = 1; y <= valor[x].length; y++){ //percorrendo a segunda dimensão, no caso 36 posições.  
      if (y % 6 == 0){
         //fazer algo
      }     
   }  
}
S

Então, ainda não resolve minha situação, pois a sua solução trataria somente os multiplos, por ex o if trata quando o valor for 6, 12, 18,24 etc etc… E trata por igual todos os outros… O que eu preciso é que, a cada 6 posições do array percorridas, ele verifique se nessas 6 ouve mais de uma variavel com valor 1, assim como eu tentei demonstrar no desenho do meu primeiro tópico… mas mesmo assim vlw…

jaboot

Incrementa uma variável. Faz uma divisão por 6 nela.
Quando o resto for igual a zero, percorreu as 6 posições. Faça sua verificação.

Criado 25 de abril de 2012
Ultima resposta 26 de abr. de 2012
Respostas 3
Participantes 3