Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2010
    Messaggi
    185

    Aiuto con <Vector<Vector<Integer>>

    Ciao a tutti ragazzi,
    ho un problema col riempimento, vi posto il codice
    codice:
    	public void readFile(String fileName) {
    		//int[][] matrice = null;
    		Vector<Vector<Integer>> matrice;
    		Vector<Integer> vettoreAppoggio;
    
    		try {
    			File inFile = new File(fileName);
    			BufferedReader br = new BufferedReader(new FileReader(inFile));
    			String line = br.readLine();
    			StringTokenizer lineTokens = new StringTokenizer(line, " ");
    			int nVariabili = Integer.parseInt(lineTokens.nextToken());
    			vettoreAppoggio = new Vector<>(nVariabili);
    			int nClausole = Integer.parseInt(lineTokens.nextToken());
    			
    			matrice = new Vector<Vector<Integer>>(nClausole);
    			
    			for(int i=0;i<vettoreAppoggio.capacity();i++){
    				line = br.readLine();
    				lineTokens = new StringTokenizer(line, " ");
    				Integer count = lineTokens.countTokens();
    				for(int j=0;j<count;j++){
    					vettoreAppoggio.add(j, (Integer.parseInt(lineTokens.nextToken())));
    				}
    				matrice.add(i, vettoreAppoggio);
    				//vettoreAppoggio.clear();
    				//vettoreAppoggio.removeAllElements();
    			}
    
    			br.close();
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    in pratica mi devo riempire matrice leggendo le righe da un file di testo cosi fatto:
    codice:
    4 4
    1 -2 -3
    -1 -4
    4
    -2 -3 4
    nel for interno al for esterno salvo in vettoreAppoggio la riga del file, e dopo riempio matrice all'index i con vettoreAppoggio, ma poi mi si sovrascrive. Mentre se uso i metodi clear() o removeAllElement() per vettoreAppoggio mi si eliminano anche i valori dentro matrice.
    Come posso risolvere?

    Grazie a tutti

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802

    Re: Aiuto con <Vector<Vector<Integer>>

    Originariamente inviato da dennis87
    Mentre se uso i metodi clear() o removeAllElement() per vettoreAppoggio mi si eliminano anche i valori dentro matrice.
    E' corretto, essendo Vector passato per riferimento (in realtà è la copia del riferimento ma poco cambia in questo caso...)
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2010
    Messaggi
    185
    Dunque come posso fare per creare matrice?

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    55
    Ciao, se ho capito tu vuoi riempire la matrice con quello che leggi da file.
    Vedo un paio di problemi: ad ogni ciclo for interno non inizializzi il vettore: aggiungi sempre altri numeri.
    Il for esterno non lo capisco, forse dovresti ciclare finché hai qualcosa da leggere...
    Vabbe, trascurando riassumendo farei così:
    codice:
    while ((line = br.readLine()) != null) {
    // for (int i = 0; i < vettoreAppoggio.capacity(); i++) {
       vettoreAppoggio = new Vector<Integer>();//inizializza il vettore di appoggio
       // line = br.readLine();//la leggiamo a inizio ciclo
       Integer count = lineTokens.countTokens();
       for (int j = 0; j < count; j++) {
          vettoreAppoggio.add(j, (Integer.parseInt(lineTokens.nextToken())));
       }
       matrice.add(vettoreAppoggio);
    }

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2010
    Messaggi
    185
    E' esattamente quello che volevo fare.
    Quindi per capire, tutte le volte che leggo una nuova linea dal file devo rinizializzare vettoreAppoggio, altrimenti non funziona la cosa..

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.