allora breve spiegazione:
prendo in input un file txt contenente circa 2000 righe dove ogni riga è formata da 130 valori.
L'obbiettivo è prendere queste righe e inserirle in un vettore da 130 valori, dato che non conosco il numero di righe per ogni file txt ho bisogno che la dimensione della struttura dati sia dinamica, per questo ho pensato a linkedlist di double[]..
il problema qual'è? semplice allora riesco per ogni riga a salvare i 130 valori nell'array ma quando vado a inserire questo array nella linkedlist ogni volta che lo inserisco mi sovrascrive il vecchio array, quindi alla fine nella linked list ho un solo elemento..
(stessa cosa capita se uso arrayList..)
come fare? non capisco perchè mi sovrascrive sempre l'elemento..nella lista c'è solo l'ultimo array dell'ultima riga letta...
Codice:
codice:public void match() throws Exception{ double [][]j = new double[3000][132]; double keypoint[] = new double[134]; LinkedList<double[]> lista = new LinkedList<double[]>(); int i,k=0,g=0,l=0,u=0; String val = ""; double[] test= new double[132]; FileInputStream f = new FileInputStream("/Users/loganwhitewolf/Tesi/workspace/immagini/img_sift1.txt"); do{ i = f.read(); if((char)i == ' ' ){ //j[k][g]=Double.parseDouble(val); keypoint[g] = 0; keypoint[g]=Double.parseDouble(val); val=""; l = -1; g++; } else { val = val + (char)i; } if((char)i == '\n') { lista.add(k,keypoint); k++; g=0; val= ""; l = 0; } //System.out.print(test[]); l++; }while(i != -1); test = (double[]) lista.get(1); g=0; while(g<132){ System.out.print(test[g]+ " "); g++;} System.out.print("\n"); f.close(); }

Rispondi quotando