Per forza: se si usano dei while, al posto dei più comodi for, bisogna stare attenti alle reinizializzazioni!
codice:
Possibilità 1

for(int i=0;i<temporaneo.size();i++)
   for(int j=0;j<=1;j++)
      data[i][j] = new Integer(i);

Possibilità 2:

while(i<temporaneo.size()) {
   while(j<2) {
      data[i][j] = new Integer(i);
      j++;
   }
   i++;
   j = 0;
}
Rispondo all'autore del post: il tuo codice era giusto.


Ciao.