inserção de objetos em matriz

1 resposta
L

Boa noite, estou tentando inserir objetos em uma matriz “algarismos” segundo o código abaixo, que está lendo sua entrada de uma matriz do excel, a cada iteração
do primeiro for, a planilha representa um algarismo diferente, mas os dois Arraylist vars adicionados ao arraylist algarismos são iguais, o que estou fazendo de errado ?

for (int k = 0; k < qtdNumeros; k++) {
            ArrayList<Integer> vars = new ArrayList<>();
            for (int i = 0; i < altura; i++) {
                for (int j = 0; j < largura; j++) {
                    Cell celula = sheet.getCell(j,i);
                    if(celula.getCellFormat().getBackgroundColour().equals(Colour.WHITE)){
                        vars.add(new Integer(-1));
                    }else{
                        vars.add(new Integer(1));
                    }
                }
            }
            algarismos.add(vars);
        }

1 Resposta

A

Bom dia, lcs.simonini.
Talvez o erro esteja na definição do algarismos, vc diz:

mas os dois Arraylist vars adicionados ao arraylist algarismos são iguais

Então, olhando seu código, entendo que os dois são um Arraylist de Integer, ai no final vc coloca:

algarismos.add(vars);
Ou seja, vc esta tentando adiciona um Arraylist, em um Arraylist que irá aceitar somente Integer. Bom se foi isso que entendi, acho que seria parecido com isso:
ArrayList<ArrayList> algarismos = new ArrayList<>();
			
for (int k = 0; k < 10; k++) {  
   ArrayList<Integer> vars = new ArrayList<>();  
   for (int i = 0; i < 5; i++) {  
      for (int j = 0; j < 5; j++) {  
        Cell celula = sheet.getCell(j,i);  
        if(celula.getCellFormat().getBackgroundColour().equals(Colour.WHITE)){  
           vars.add(new Integer(-1));  
        }else{  
           vars.add(new Integer(1));  
        }    
      }  
    } 	           
	           
    algarismos.add(vars);  

}
e para exibir o resultado, algo parecido com isso:
for (ArrayList arrayList : algarismos) {
   for (int i = 0; i < arrayList.size(); i++) {
      System.out.println(arrayList.get(i));
   }
}

Espero ter ajudado.

Criado 22 de janeiro de 2013
Ultima resposta 23 de jan. de 2013
Respostas 1
Participantes 2