Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    347

    [Java] problema con costruttore che usa varargs

    sarò ignorante io che non capisco l'errore... comunque c'è poco da dire, il codice è questo:
    codice:
    	public CubeMatrix(int... a){System.out.print(a.length);
    		switch(a.length){
    			case 1: {this.x = a[0]; this.y = 0; this.z = 0;}
    			case 2: {this.x = a[0]; this.y = a[1]; this.z = 0;}
    			default: {this.x = a[0]; this.y = a[1]; this.z = a[2];}
    		}
    		cm = (T[][])new Object[x][y];
    		for(int i=0; i<cm.length; i++){
    			for(int j=0; j<cm[0].length; j++){
    				cm[i][j] = (T)new Object[z];
    			}
    		}
    	}
    	public static void main(String[] args){
    		CubeMatrix<Integer> cm = new CubeMatrix<Integer>(2, 3);
    e mi ritorna un'eccezione arrayOutOfBounds... alla riga di default dello switch... che non dovrebbe essere eseguita dal momento che la lunghezza di a è uguale a 2... illuminatemi

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    613

    Re: [Java] problema con costruttore che usa varargs

    Originariamente inviato da John360
    sarò ignorante io che non capisco l'errore... comunque c'è poco da dire, il codice è questo:
    codice:
    	public CubeMatrix(int... a){System.out.print(a.length);
    		switch(a.length){
    			case 1: {this.x = a[0]; this.y = 0; this.z = 0;}
    			case 2: {this.x = a[0]; this.y = a[1]; this.z = 0;}
    			default: {this.x = a[0]; this.y = a[1]; this.z = a[2];}
    		}
    		cm = (T[][])new Object[x][y];
    		for(int i=0; i<cm.length; i++){
    			for(int j=0; j<cm[0].length; j++){
    				cm[i][j] = (T)new Object[z];
    			}
    		}
    	}
    	public static void main(String[] args){
    		CubeMatrix<Integer> cm = new CubeMatrix<Integer>(2, 3);
    e mi ritorna un'eccezione arrayOutOfBounds... alla riga di default dello switch... che non dovrebbe essere eseguita dal momento che la lunghezza di a è uguale a 2... illuminatemi
    Nel costrutto switch quando viene trovato il case giusto l'esecuzione prosegue finché non trova un break, eseguendo anche tutti i case successivi e il default; metti i break alla fine dei case.

    http://docs.oracle.com/javase/tutori...ts/switch.html

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    347
    ah ok! grazie

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    347
    EDIT: alla fine, cioè al default, è opzionale il break giusto?

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    613
    Originariamente inviato da John360
    EDIT: alla fine, cioè al default, è opzionale il break giusto?
    Solitamente il break nel default si omette perché il default viene messo alla fine, ma è possibile metterlo pure "in mezzo", e in quel caso potrebbe essere necessario il break. Tuttavia non ho mai visto nessuno mettere il default in mezzo, quindi io alla fine il break non ce lo metto.

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    347
    ok perfetto! Grazie 1000

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.