Armazenado um vetor unidimensional em um bidimensional varias vezes

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!

[code]public static final int LINHAS = 6;
public static final int COLUNAS = 5;
private String conteudo[][];
public static final String VAZIO = “V”;

public void limpar() {
for(int i = 0; i < LINHAS; i++)
for(int j = 0; j < COLUNAS; j++)
conteudo[i][j] = VAZIO;
}

public void gerar() {
limpar();
String n = “”;
String test[] = {“1”,“2”,“3”,“4”,“5”,“6”,“7”,“8”,“9”,“10”};
while(eVazio()){
o = 0;
for(int i=0; i < LINHAS; i++){
for(int j=0; j < COLUNAS; j++){
do{
conteudo[i][j] = test[o];
n += conteudo[i][j]+"\n";
o++;
}
while(o<10);
}
}
System.out.println(n);
}

public boolean eVazio()
{
for(int i=0; i<conteudo.length; i++){
for(int j=0; j<conteudo[i].length; j++){
if(conteudo[i][j].equalsIgnoreCase(VAZIO)){
return true;
}
}
}
return false;
} [/code]

Você pode resolver isso facilmente usando um for.

[code]
public class Exemplo {
public static final int LINHAS = 6;
public static final int COLUNAS = 5;
private String conteudo[][] = new String[LINHAS][COLUNAS];
public static final String VAZIO = "V";

public void limpar() {
    for (int i = 0; i &lt; LINHAS; i++)
        for (int j = 0; j &lt; COLUNAS; j++)
            conteudo[i][j] = VAZIO;
}

public void gerar() {   
    limpar();   
    String test[] = {&quot;1&quot;,&quot;2&quot;,&quot;3&quot;,&quot;4&quot;,&quot;5&quot;,&quot;6&quot;,&quot;7&quot;,&quot;8&quot;,&quot;9&quot;,&quot;10&quot;};
    
    int linha = 0;
    int coluna = 0;

    //Percorremos o vetor test        
    for (int i = 0; i &lt; test.length; i++) {
        conteudo[linha][coluna] = test[i];
        coluna++; //Pulamos para próxima coluna
        if (coluna == COLUNAS) {  //Chegamos na última coluna? Pula uma linha.
            coluna = 0;
            linha++;
        }            
    }
}

public void imprimir() {
    System.out.println(&quot;Resultado:&quot;);
    for (int i = 0; i &lt; LINHAS; i++) {
        System.out.println();
        for (int j = 0; j &lt; COLUNAS; j++) {                
            System.out.print(conteudo[i][j] + &quot; &quot;);
        }
    }
}
public static void main(String[] args) {
    Exemplo exemplo = new Exemplo();
    exemplo.limpar();
    exemplo.gerar();
    exemplo.imprimir();
}

}[/code]

faz um for pra percorrer o vetor, e utiliza 2 variaveis pra percorrer a matriz.


int linha = 0;
int coluna = 0;

for (int i = 0; i < vetor.length; i++)
{

   matriz[linha][coluna] = vetor[i];

   coluna++;

   if (i % vetor[i].length)
   {
      linha++;
      coluna = 0; 
   }

}

isso é só uma idéia.
Espero ter ajudado.

Abraços

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.

Podemos fazer assim:

[code]public void gerar() {
limpar();
String test[] = {"1","2","3","4","5","6","7","8","9","10"};

int ultIndice = 0; //Marca qual foi o último índice copiado
for (int linha = 0; linha < LINHAS; linha++) {
//Calculamos a posição para iniciar a leitura na matriz original
int posCopy = Math.min(COLUNAS, test.length - ultIndice);

  //Fazemos a cópia da linha inteira usando array copy.
  System.arraycopy(test, linha*COLUNAS, conteudo[linha], 0, posCopy);
        
  //Calculamos o último índice copiado
  ultIndice += posCopy;
        
  //Se já copiamos tudo o que tínhamos para copiar, paramos o loop.
  if (ultIndice == test.length)
     break;

}
}[/code]

[quote=alanclic] if (i % vetor[i].length)
[/quote]

Faltou igualar a zero:

if (i % vetor[i].length == 0)

Obs: Num no caso do C++ ou C, isso quase funciona. Bastaria negar a expressão:

if (!(i % vetor[i].length)) //Não funciona em java! Mas em C ou C++, 0 é falso e o resto é verdadeiro!

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.