Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    2

    problema con l'aggiornamento di un array (JAVA)

    Salve,
    ho un problema Java che viene spiegato nel codice qui sotto.

    codice:
    public class ProblemiNelUpdateDiUnArray {
    
    	/**
    	 * @param args
    	 */
    	
    	public static void postDoubleStringArray (String[][] thisArray) {
    		String stringToBePrinted="";
    		for (int j = 0; j < thisArray.length; j++) {
    
    			for (int jj = 0; jj < thisArray[0].length; jj++) {
    				stringToBePrinted = stringToBePrinted.concat("[" + j + "]" + "[" + jj + "] "
    						+ thisArray[j][jj] + " ");
    			}
    			System.out.println(stringToBePrinted);
    			stringToBePrinted="";
    		}
    	}
    	
    	public static void main(String[] args) {
    		String[][] minus1Sa = new String[3][3];
    		for (int ii=0; ii<minus1Sa.length; ii++){
    			for (int iii=0; iii<minus1Sa[ii].length; iii++)
    				minus1Sa[ii][iii] = "null";
    		}
    		
    		String[][] minus2Sa = new String[3][3];
    		for (int ii=0; ii<minus2Sa.length; ii++){
    			for (int iii=0; iii<minus2Sa[ii].length; iii++)
    				minus2Sa[ii][iii] = "null";
    		}
    		
    		String[] saX = {"0", "b", "c"};
    		String[] saY = {"2", "bb", "cc"};
    		int tickerIndex = Integer.valueOf(saX[0]); 
    		System.out.println("Scrivo in minus1Sa["+tickerIndex+"] l'array saX ");
    		minus1Sa[tickerIndex] = saX;
    		System.out.println("minus1Sa è diventato... ");
    		postDoubleStringArray(minus1Sa);
    			System.out.println("minus2Sa è sempre... ");
    			postDoubleStringArray(minus2Sa);
    		System.out.println();
    		
    		System.out.println("copio minus1Sa in minus2Sa che diventa... ");
    		minus2Sa = minus1Sa;
    		System.out.println("per ora minus1Sa è sempre... ");
    		postDoubleStringArray(minus1Sa);
    		System.out.println("e minus2Sa è diventato... ");
    		postDoubleStringArray(minus2Sa);
    		System.out.println();
    
    		tickerIndex = Integer.valueOf(saY[0]); 
    		System.out.println("Aggiorno  minus1Sa["+tickerIndex+"] con l'array saY ");
    		minus1Sa[tickerIndex] = saY;
    		System.out.println("minus1Sa ora è diventato... ");
    		postDoubleStringArray(minus1Sa);
    		System.out.println();
    		System.out.println("minus2Sa non dovrebbe essere cambiato e invece lo è... ");
    		postDoubleStringArray(minus2Sa);
    		System.out.println();
    		System.out.println("PERCHE'?");
    	}
    }
    Grazie per l'aiuto!
    fcc

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    2
    credo di aver capito...
    devo "clonare" l'array che voglio copiare...

    Ora funziona
    codice:
    
    public class ProblemiNelUpdateDiUnArray {
    
    	/**
    	 * @param args
    	 */
    	
    	public static void postDoubleStringArray (String[][] thisArray) {
    		String stringToBePrinted="";
    		for (int j = 0; j < thisArray.length; j++) {
    
    			for (int jj = 0; jj < thisArray[0].length; jj++) {
    				stringToBePrinted = stringToBePrinted.concat("[" + j + "]" + "[" + jj + "] "
    						+ thisArray[j][jj] + " ");
    			}
    			System.out.println(stringToBePrinted);
    			stringToBePrinted="";
    		}
    	}
    	
    	public static void main(String[] args) {
    
    		String[][] minus1Sa = new String[3][3];
    		for (int ii=0; ii<minus1Sa.length; ii++){
    			for (int iii=0; iii<minus1Sa[ii].length; iii++)
    				minus1Sa[ii][iii] = "null";
    		}
    		String[][] minus2Sa = new String[3][3];
    		for (int ii=0; ii<minus2Sa.length; ii++){
    			for (int iii=0; iii<minus2Sa[ii].length; iii++)
    				minus2Sa[ii][iii] = "null";
    		}
    		String[] saX = {"0", "b", "c"};
    		String[] saY = {"2", "bb", "cc"};
    
    		
    		int tickerIndex = Integer.valueOf(saX[0]); 
    		System.out.println("Scrivo in minus1Sa["+tickerIndex+"] l'array saX ");
    		minus1Sa[tickerIndex] = saX;
    		System.out.println("minus1Sa è diventato... ");
    		postDoubleStringArray(minus1Sa);
    			System.out.println("minus2Sa è sempre... ");
    			postDoubleStringArray(minus2Sa);
    		System.out.println();
    		
    		System.out.println("copio minus1Sa in minus2Sa che diventa... ");
    // *************** qui c'era l'errore ***************
    		minus2Sa = minus1Sa.clone();
    // ****************************
    
    		System.out.println("per ora minus1Sa è sempre... ");
    		postDoubleStringArray(minus1Sa);
    		System.out.println("e minus2Sa è diventato... ");
    		postDoubleStringArray(minus2Sa);
    		System.out.println();
    
    		tickerIndex = Integer.valueOf(saY[0]); 
    		System.out.println("Aggiorno  minus1Sa["+tickerIndex+"] con l'array saY ");
    		minus1Sa[tickerIndex] = saY;
    		System.out.println("minus1Sa ora è diventato... ");
    		postDoubleStringArray(minus1Sa);
    		System.out.println();
    		
    		System.out.println("minus2Sa ora NON E' CAMBIATO :-)... ");
    		postDoubleStringArray(minus2Sa);
    		System.out.println();
    	}
    }

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da fcc
    devo "clonare" l'array che voglio copiare...
    Occhio a come funziona il clone() sugli array (specialmente quelli multidimensione)! Vedi questo mio post.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.