AR89 Inviato 26 Gennaio 2009 Segnala Condividi Inviato 26 Gennaio 2009 L'esercizio dice: Costruisci un vettore di boolean che riceve un vettore di interi e restituisce: true: se la somma in posizione minore uguale ad i è pari; flase se è dispari; ecco il codice public class Vettore_somma { public static void main (String args[]) { int []v= {6,8,3,9,2,6}; boolean[] t= costruisciVettore(v); stampaArray(t); } public static boolean [] costruisciVettore (int[] a) { int index= 0; boolean[] b= new boolean[index]; for (int i=0; i<a.length; i++){ for (int c=i; c<=i; c--){ if ((a[i]+a[c])%2==0){ b[index]=true;} else { b[index]=false; } index++; } } return b; } public static void stampaArray (boolean[]a) { System.out.print ("["); for (int i=0; i<a.length; i++) { if (i==a.length-1) { System.out.println (a[i]+"]"); } else { System.out.print (a[i]+","); }//else }//for }/* metodo*/ } questo è l'errore che mi dà Xcode :Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1 at Vettore_somma.costruisciVettore(Vettore_somma.java:25) at Vettore_somma.main(Vettore_somma.java:14) Qualcuno potrebbe aiutarmi? http://www.2shared.com/file/oiZtjX1r/TetrisMac.html Un Tetris in vecchio stile, dedicato alla versione per Mac degli anni 80. Link al commento Condividi su altri siti Altre opzioni di condivisione...
kaioshin Inviato 26 Gennaio 2009 Segnala Condividi Inviato 26 Gennaio 2009 L'errore è in questa riga: boolean[] b= new boolean[index]; al posto di index metti 6, quindi: boolean[] b = new boolean[6]; L' eccezione ArrayIndexOutOfBoundsException significa che sei andato fuori dai limiti del vettore La teoria è quando si sa tutto e niente funziona. La pratica è quando tutto funziona e nessuno sa il perché. Noi abbiamo messo insieme la teoria e la pratica: non c'è niente che funzioni... e nessuno sa il perché! Link al commento Condividi su altri siti Altre opzioni di condivisione...
kaioshin Inviato 26 Gennaio 2009 Segnala Condividi Inviato 26 Gennaio 2009 adesso compila? La teoria è quando si sa tutto e niente funziona. La pratica è quando tutto funziona e nessuno sa il perché. Noi abbiamo messo insieme la teoria e la pratica: non c'è niente che funzioni... e nessuno sa il perché! Link al commento Condividi su altri siti Altre opzioni di condivisione...
AR89 Inviato 26 Gennaio 2009 Autore Segnala Condividi Inviato 26 Gennaio 2009 adesso compila? no, mi ridà lo stesso errore di prima. Quell'Index inoltre mi serve come contatore per creare il nuovo vettore con le giuste dimensioni a seconda del vettore che arriva in entrata. http://www.2shared.com/file/oiZtjX1r/TetrisMac.html Un Tetris in vecchio stile, dedicato alla versione per Mac degli anni 80. Link al commento Condividi su altri siti Altre opzioni di condivisione...
kaioshin Inviato 26 Gennaio 2009 Segnala Condividi Inviato 26 Gennaio 2009 Non ho ben capito cosa debba fare questo programma. Cosa significa la somma in posizione minore uguale ad i? La teoria è quando si sa tutto e niente funziona. La pratica è quando tutto funziona e nessuno sa il perché. Noi abbiamo messo insieme la teoria e la pratica: non c'è niente che funzioni... e nessuno sa il perché! Link al commento Condividi su altri siti Altre opzioni di condivisione...
kaioshin Inviato 26 Gennaio 2009 Segnala Condividi Inviato 26 Gennaio 2009 for (int c=i; c<=i; c--) qui c'è un altro errore La teoria è quando si sa tutto e niente funziona. La pratica è quando tutto funziona e nessuno sa il perché. Noi abbiamo messo insieme la teoria e la pratica: non c'è niente che funzioni... e nessuno sa il perché! Link al commento Condividi su altri siti Altre opzioni di condivisione...
kaioshin Inviato 26 Gennaio 2009 Segnala Condividi Inviato 26 Gennaio 2009 no, mi ridà lo stesso errore di prima.Quell'Index inoltre mi serve come contatore per creare il nuovo vettore con le giuste dimensioni a seconda del vettore che arriva in entrata. Lo avevo capito, ma quando crei il vettore, index è inizializzato a 0 e quindi è come se crei un vettore di 0 elementi,quindi non crei niente. Al posto di index puoi usare a.lenght La teoria è quando si sa tutto e niente funziona. La pratica è quando tutto funziona e nessuno sa il perché. Noi abbiamo messo insieme la teoria e la pratica: non c'è niente che funzioni... e nessuno sa il perché! Link al commento Condividi su altri siti Altre opzioni di condivisione...
AR89 Inviato 26 Gennaio 2009 Autore Segnala Condividi Inviato 26 Gennaio 2009 Non ho ben capito cosa debba fare questo programma.Cosa significa la somma in posizione minore uguale ad i? i è un numero intero che scorre lungo il vettore in entrata (è un semplice contatore di un for). Ti faccio un esempio: ricevo il vettore a (3,6,9,7) eseguendo il metodo dovrò restituire il vettore b (false, false, true, false) http://www.2shared.com/file/oiZtjX1r/TetrisMac.html Un Tetris in vecchio stile, dedicato alla versione per Mac degli anni 80. Link al commento Condividi su altri siti Altre opzioni di condivisione...
AR89 Inviato 26 Gennaio 2009 Autore Segnala Condividi Inviato 26 Gennaio 2009 Lo avevo capito, ma quando crei il vettore, index è inizializzato a 0 e quindi è come se crei un vettore di 0 elementi,quindi non crei niente.Al posto di index puoi usare a.lenght anche usando quello non funziona, ci ho già provato. Cmq poi avrei degli spazi vuoti. http://www.2shared.com/file/oiZtjX1r/TetrisMac.html Un Tetris in vecchio stile, dedicato alla versione per Mac degli anni 80. Link al commento Condividi su altri siti Altre opzioni di condivisione...
kaioshin Inviato 26 Gennaio 2009 Segnala Condividi Inviato 26 Gennaio 2009 In sostanza devi sommare il valore corrente con tutti i precedenti e verificare se la somma da un valore pari o dispari? La teoria è quando si sa tutto e niente funziona. La pratica è quando tutto funziona e nessuno sa il perché. Noi abbiamo messo insieme la teoria e la pratica: non c'è niente che funzioni... e nessuno sa il perché! Link al commento Condividi su altri siti Altre opzioni di condivisione...
AR89 Inviato 26 Gennaio 2009 Autore Segnala Condividi Inviato 26 Gennaio 2009 In sostanza devi sommare il valore corrente con tutti i precedenti e verificare se la somma da un valore pari o dispari? sì http://www.2shared.com/file/oiZtjX1r/TetrisMac.html Un Tetris in vecchio stile, dedicato alla versione per Mac degli anni 80. Link al commento Condividi su altri siti Altre opzioni di condivisione...
kaioshin Inviato 26 Gennaio 2009 Segnala Condividi Inviato 26 Gennaio 2009 anche usando quello non funziona, ci ho già provato. Cmq poi avrei degli spazi vuoti. Si lo so,perchè l'errore è nel for più interno,perchè quando i è zero e lo assegni a c nel for non puoi decrementare c,diventerebbe -1 che è fuori dai confini del vettore. Cmq se devi fare quello che ti ho scritto nel post sopra questo codice non funziona. La teoria è quando si sa tutto e niente funziona. La pratica è quando tutto funziona e nessuno sa il perché. Noi abbiamo messo insieme la teoria e la pratica: non c'è niente che funzioni... e nessuno sa il perché! Link al commento Condividi su altri siti Altre opzioni di condivisione...
kaioshin Inviato 26 Gennaio 2009 Segnala Condividi Inviato 26 Gennaio 2009 ok allora devi riscrivere il codice del for più interno. Dammi 5 minuti che te lo posto La teoria è quando si sa tutto e niente funziona. La pratica è quando tutto funziona e nessuno sa il perché. Noi abbiamo messo insieme la teoria e la pratica: non c'è niente che funzioni... e nessuno sa il perché! Link al commento Condividi su altri siti Altre opzioni di condivisione...
AR89 Inviato 26 Gennaio 2009 Autore Segnala Condividi Inviato 26 Gennaio 2009 ok allora devi riscrivere il codice del for più interno.Dammi 5 minuti che te lo posto ho modificato i due for così for (int i=1; i<a.length; i++){ for (int c=i-1; c<=i;) { http://www.2shared.com/file/oiZtjX1r/TetrisMac.html Un Tetris in vecchio stile, dedicato alla versione per Mac degli anni 80. Link al commento Condividi su altri siti Altre opzioni di condivisione...
Silver Shadow Inviato 26 Gennaio 2009 Segnala Condividi Inviato 26 Gennaio 2009 Ecco perchè: int index= 0; boolean[] b= new boolean[index]; Crei un array con.. 0 elementi o_O non dovrebbe essere di lunghezza pari ad a, per tenere tutti i true o false che dici tu? Il secondo for poi come fa notare kaioshin non ha molto senso.. è completamente errato concettualmente. A che ti serve poi un doppio ciclo? Si può fare con uno solo, ad esempio così: int somma = 0; for (int i=0; i<a.length; i++) { somma += a[i]; b[i] = (somma%2 == 0); } Due osservazioni: calcoli la somma ogni volta aggiungendo semplicemente il nuovo numero, e per assegnare true o false basta assegnare alla posizione dell'array di b il risultati dell'espressione booleana (somma%2 == 0) Ps: per Java consiglierei l'utilizzo di Eclipse o Netbeans, piuttosto che Xcode! Just when things went right, it doesn't mean they were always wrong ~ » Use Your Illusion « Link al commento Condividi su altri siti Altre opzioni di condivisione...
kaioshin Inviato 26 Gennaio 2009 Segnala Condividi Inviato 26 Gennaio 2009 public static boolean [] costruisciVettore (int[] a) { boolean[] b= new boolean[a.length]; for (int i=0; i<a.length; i++){ int somma = 0; for (int c=0; c<=i; c++){ somma += a[c]; } if(somma%2==0) b=true; else b=false; } return b; } La teoria è quando si sa tutto e niente funziona. La pratica è quando tutto funziona e nessuno sa il perché. Noi abbiamo messo insieme la teoria e la pratica: non c'è niente che funzioni... e nessuno sa il perché! Link al commento Condividi su altri siti Altre opzioni di condivisione...
AR89 Inviato 26 Gennaio 2009 Autore Segnala Condividi Inviato 26 Gennaio 2009 Grazie a tutti e due per l'aiuto ora funziona PS come mai mi consigli Eclipse? Finora con Xcode non ho avuto nessun problema. http://www.2shared.com/file/oiZtjX1r/TetrisMac.html Un Tetris in vecchio stile, dedicato alla versione per Mac degli anni 80. Link al commento Condividi su altri siti Altre opzioni di condivisione...
kaioshin Inviato 26 Gennaio 2009 Segnala Condividi Inviato 26 Gennaio 2009 Ecco perchè: int index= 0; boolean[] b= new boolean[index]; Crei un array con.. 0 elementi o_O non dovrebbe essere di lunghezza pari ad a, per tenere tutti i true o false che dici tu? Il secondo for poi come fa notare kaioshin non ha molto senso.. è completamente errato concettualmente. A che ti serve poi un doppio ciclo? Si può fare con uno solo, ad esempio così: int somma = 0; for (int i=0; i<a.length; i++) { somma += a[i]; b[i] = (somma%2 == 0); } Due osservazioni: calcoli la somma ogni volta aggiungendo semplicemente il nuovo numero, e per assegnare true o false basta assegnare alla posizione dell'array di b il risultati dell'espressione booleana (somma%2 == 0) Ps: per Java consiglierei l'utilizzo di Eclipse o Netbeans, piuttosto che Xcode! Silver il tuo codice è sicuramente migliore però io ho preferito correggerlo seguendo il ragionamento logico dell'utente.Magari è alle prime armi,e potrebbe confondersi. Comunque per java io dico eclipse,mi sono trovato davvero bene La teoria è quando si sa tutto e niente funziona. La pratica è quando tutto funziona e nessuno sa il perché. Noi abbiamo messo insieme la teoria e la pratica: non c'è niente che funzioni... e nessuno sa il perché! Link al commento Condividi su altri siti Altre opzioni di condivisione...
kaioshin Inviato 26 Gennaio 2009 Segnala Condividi Inviato 26 Gennaio 2009 Xcode è probabilmente il migliore,ma per programmi così semplici e piccoli è completamente inutile. a questi livelli sarebbe quasi preferibile utilizzare un editor di testo avanzato come Smultron e compilare da terminale La teoria è quando si sa tutto e niente funziona. La pratica è quando tutto funziona e nessuno sa il perché. Noi abbiamo messo insieme la teoria e la pratica: non c'è niente che funzioni... e nessuno sa il perché! Link al commento Condividi su altri siti Altre opzioni di condivisione...
kaioshin Inviato 26 Gennaio 2009 Segnala Condividi Inviato 26 Gennaio 2009 Xcode è probabilmente il migliore,ma per programmi così semplici e piccoli è completamente inutile. a questi livelli sarebbe quasi preferibile utilizzare un editor di testo avanzato come Smultron e compilare da terminale La teoria è quando si sa tutto e niente funziona. La pratica è quando tutto funziona e nessuno sa il perché. Noi abbiamo messo insieme la teoria e la pratica: non c'è niente che funzioni... e nessuno sa il perché! Link al commento Condividi su altri siti Altre opzioni di condivisione...
Messaggi raccomandati
Archiviato
Questa discussione è archiviata e chiusa a future risposte.