AR89 Inviato 26 Marzo 2009 Segnala Condividi Inviato 26 Marzo 2009 Ho creata il seguente codice, che serve, dati i primi n numeri, a trovare quali sono quelli primi fra di essi. import java.util.*; public class CrivelloDiEratostene { private Set<Integer> crivello= new HashSet<Integer>(); private int n; public CrivelloDiEratostene (int n) { if (n<2) throw new IllegalArgumentException(); this.n=n; for (int i=2; i<=n; i++) crivello.add(i); }//costruttore public void filtra(){ for(int i=2; i<Math.round(Math.sqrt(n)); i= (i==2)? i+1 : i+2) if (crivello.contains(i)) for (int j=2*i; j<= n; j+=i) crivello.remove(j); }//filtra public String toString(){ TreeSet ts= new TreeSet(crivello); int conta=0, quanti=8; StringBuilder sb= new StringBuilder(1000); Iterator<Integer> it= ts.iterator(); while (it.hasNext()){ int x=it.next(); sb.append(String.format("%8d", x)); conta++; if (conta%quanti==0) sb.append('\n'); }//while return sb.toString(); }//toString public static void main(String[] args) { CrivelloDiEratostene c= new CrivelloDiEratostene(1000); c.filtra(); System.out.println(c); }//main } Quando cerco di compilarlo mi dà il seguente errore: Note: poo/crivello/CrivelloDiEratostene.java uses unchecked or unsafe operations.Note: Recompile with -Xlint:unchecked for details. È un errore che non avevo mai visto, cosa significa? Se Java su Mac è aggiornata alla 1.5, significa che dovrebbe supportare l'autoboxing e l'autounboxing (se questo è il 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...
sadamelik Inviato 27 Marzo 2009 Segnala Condividi Inviato 27 Marzo 2009 Ciao AR89 ora non riesco a dare un'occhiata al tuo codice, se ti serve qualcosa di funzionante immediatamente di mando il link della pagina di wikipedia che ne parla è c'è un elegante implementazione dell'algoritmo. Cmq Appena posso cercherò di dare un'occhiata al tuo codice per verificare se ci sono eventuali errori. Sulla macchina unix che uso ho solo java 1.4.2 e il tuo codice non funziona provvederò a farlo sulla mia macchina fuori dal lavoro quando ho un momentino di tempo. Buon coding!!!! tecnologicamente dipendente Link al commento Condividi su altri siti Altre opzioni di condivisione...
AR89 Inviato 27 Marzo 2009 Autore Segnala Condividi Inviato 27 Marzo 2009 Ciao AR89ora non riesco a dare un'occhiata al tuo codice, se ti serve qualcosa di funzionante immediatamente di mando il link della pagina di wikipedia che ne parla è c'è un elegante implementazione dell'algoritmo. Cmq Appena posso cercherò di dare un'occhiata al tuo codice per verificare se ci sono eventuali errori. Sulla macchina unix che uso ho solo java 1.4.2 e il tuo codice non funziona provvederò a farlo sulla mia macchina fuori dal lavoro quando ho un momentino di tempo. Buon coding!!!! Grazie per la disponibiità Il codice che ho scritto non può funzionare con la 1.4.2, dvi avee almeno la 1.5 perché sfrutta l'unboxing e il boxing (in pratica fa il casting in automatico). Ho visto l'agoritmo su wikipedia e funziona correttamente, tuttavia il codice che ho fatto mi serve come eserctazione, perché devo capire i meccanismi dell'HashSet e del TreeSet. 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...
sadamelik Inviato 27 Marzo 2009 Segnala Condividi Inviato 27 Marzo 2009 ....tuttavia il codice che ho fatto mi serve come eserctazione, perché devo capire i meccanismi dell'HashSet e del TreeSet. Complimenti ... ottimo approccio per apprendere il linguaggio tecnologicamente dipendente Link al commento Condividi su altri siti Altre opzioni di condivisione...
AR89 Inviato 29 Marzo 2009 Autore Segnala Condividi Inviato 29 Marzo 2009 Complimenti ... ottimo approccio per apprendere il linguaggio È il solo metodo che conosca per riuscire ad imparare. Sei riuscito a capire cosa significhi quell'errore? Credo che per risolverlo per prima cosa si dovrebbe vedere come funziona il codice su una macchina con Java 1.5 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...
sadamelik Inviato 30 Marzo 2009 Segnala Condividi Inviato 30 Marzo 2009 Ciao ... ho provato questa mattina a far girare il tuo codice, e ho comparato i risultati con l'algoritmo che ti avevo linkato nel mio post quello preso da wikipedia i risultati che produce sono gli stessi. Per quanto riguarda il problema segnalato nel tuo post forse ho un'idea ma non sono sicuro. Ti mando il codice da me modificato import java.util.*; public class CrivelloDiEratostene { private Set<Integer> crivello= new HashSet<Integer>(); private int n; public CrivelloDiEratostene (int n) { if (n<2) throw new IllegalArgumentException(); this.n=n; for (int i=2; i<=n; i++) crivello.add([color="Red"]new Integer(i)[/color]); }//costruttore public void filtra(){ for(int i=2; i<Math.round(Math.sqrt(n)); i= (i==2)? i+1 : i+2) if (crivello.contains([color="Red"]new Integer(i)[/color])) for (int j=2*i; j<= n; j+=i) crivello.remove(j); }//filtra public String toString(){ TreeSet ts= new TreeSet(crivello); int conta=0, quanti=8; StringBuilder sb= new StringBuilder(1000); Iterator<Integer> it= ts.iterator(); while (it.hasNext()){ int x=it.next(); sb.append(String.format("%8d", x)); conta++; if (conta%quanti==0) sb.append('\n'); }//while return sb.toString(); }//toString public static void main(String[] args) { CrivelloDiEratostene c= new CrivelloDiEratostene(1000); c.filtra(); System.out.println(c); }//main } Ti ho evidenziato in rosso le uniche modifiche che ho fatto!!! Come puoi vedere alle struttura HashSet che hai creato non passo un elemento semplice ma un oggetto Integer come richiesto dalla tua dichiarazione private Set<Integer> crivello tecnologicamente dipendente Link al commento Condividi su altri siti Altre opzioni di condivisione...
AR89 Inviato 30 Marzo 2009 Autore Segnala Condividi Inviato 30 Marzo 2009 Sono riuscito a risolvere anch'io ma in modo diverso. In realtà il compilatore non mi segnalava un errore! host31-135-dynamic:/ antonioruffolo$ javac poo/crivello/CrivelloDiEratostene.javaNote: poo/crivello/CrivelloDiEratostene.java uses unchecked or unsafe operations. Note: Recompile with -Xlint:unchecked for details. Le due "Note", sono due semplici avvisi, io credevo che si trattasse di un errore e quindi non ho provato a eseguire il codice, per caso oggi ho provato a eseguirlo e funziona perfettamente, non c'è bisogno di nessuna modifica! Probabilmente quelle due note servono a ricordarti che quel codice potrebbe non funzionare con tutte le JVT. Se hai un computer con java alla versione 1.5 o superiore, prova a compilare e a eseguire normalmente il codice che ho scritto senza nessuna modifica, dovrebbe funzionare normalmente! Quello che tu hai evidenziato in rosso è quello che va fatto con una versione precedente alla 1.5, dalla 1.5 in poi capisce automaticamente che gli sto passando un oggetto, quindi non c'è bisogno di scrivere "new Integer(i)". Spero di essere stato chiaro Grazie lo stesso per l'aiuto! 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...
Messaggi raccomandati
Archiviato
Questa discussione è archiviata e chiusa a future risposte.