Armazenado um vetor unidimensional em um bidimensional varias vezes
4 respostas
C
carllacj
tenho um vetor de 10 posições, quero passar o conteudo para um outro vetor [6][5] até não sobrar mais posições vazias no vetor bidimensional, tentei de varias formas, me ajudem!
publicclassExemplo{publicstaticfinalintLINHAS=6;publicstaticfinalintCOLUNAS=5;privateStringconteudo[][]=newString[LINHAS][COLUNAS];publicstaticfinalStringVAZIO="V";publicvoidlimpar(){for(inti=0;i<LINHAS;i++)for(intj=0;j<COLUNAS;j++)conteudo[i][j]=VAZIO;}publicvoidgerar(){limpar();Stringtest[]={"1","2","3","4","5","6","7","8","9","10"};intlinha=0;intcoluna=0;//Percorremos o vetor test for(inti=0;i<test.length;i++){conteudo[linha][coluna]=test[i];coluna++;//Pulamos para próxima colunaif(coluna==COLUNAS){//Chegamos na última coluna? Pula uma linha.coluna=0;linha++;}}}publicvoidimprimir(){System.out.println("Resultado:");for(inti=0;i<LINHAS;i++){System.out.println();for(intj=0;j<COLUNAS;j++){System.out.print(conteudo[i][j]+"");}}}publicstaticvoidmain(String[]args){Exemploexemplo=newExemplo();exemplo.limpar();exemplo.gerar();exemplo.imprimir();}}
alanclic
faz um for pra percorrer o vetor, e utiliza 2 variaveis pra percorrer a matriz.
Ok. Existe outra maneira de resolver esse problema, provavelmente muito mais rápida. Mas é menos trivial.
Envolve usar a função System.arrayCopy, do Java. Essa função copia uma matriz unidimensional dentro de outra.
Como ela usa cópia direta de memória, ela é muito mais rápida do que copiar com o for.
Ainda sim, como você já está controlando usando variáveis, acho preferível usar um if com ==, como eu fiz ali em cima, ao invés do operador de resto. O código fica mais claro.