|
|
|
![]() |
|
Strumenti |
![]() |
#21 | |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
Io preferisco spezzare l'operazione e avere la copia dei dati sottomano tra le due operazioni; poi uno valuta che approccio usare anche a seconda della situazione.
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
![]() |
![]() |
![]() |
#22 |
Member
Iscritto dal: Dec 2006
Messaggi: 185
|
Codice:
import java.io.*; import java.lang.*; import java.util.*; class Log { public static void main (String args[]) { int i=0; //indice dell'array di stringhe String s=null; List inputFile = new ArrayList(); try { FileReader f = new FileReader("protezione2.txt"); //apro il file di input in lettura BufferedReader fIN = new BufferedReader(f); String line = fIN.readLine(); while(line != null) { inputFile.add(line); line = fIN.readLine(); } Iterator iterator = inputFile.iterator(); while (iterator.hasNext()){ String line = iterator.next(); if (line.indexOf("administrator") != -1) iterator.remove(); } } catch(IOException e) { System.out.println("Si e' verificata un'eccezione "+e.getMessage()); } }} Ultima modifica di Xizor : 07-07-2009 alle 11:14. |
![]() |
![]() |
![]() |
#23 | |
Bannato
Iscritto dal: Jan 2003
Città:
Messaggi: 4421
|
Quote:
...ciao Andrea... |
|
![]() |
![]() |
![]() |
#24 |
Member
Iscritto dal: Dec 2006
Messaggi: 185
|
Codice:
import java.io.*; import java.lang.*; import java.util.*; class Log { public static void main (String args[]) { int i=0; String s=null; List inputFile = new ArrayList(); try { FileReader f = new FileReader("protezione2.txt"); BufferedReader fIN = new BufferedReader(f); String line = fIN.readLine(); while(line != null) { inputFile.add(line); line = fIN.readLine(); } Iterator iterator = inputFile.iterator(); while (iterator.hasNext()){ line = (String) iterator.next(); if (line.indexOf("administrator") != -1) iterator.remove(); } } catch(IOException e) { System.out.println("Si e' verificata un'eccezione "+e.getMessage()); } }} |
![]() |
![]() |
![]() |
#25 |
Bannato
Iscritto dal: Jan 2003
Città:
Messaggi: 4421
|
...se funziona si...
...ciao Andrea... |
![]() |
![]() |
![]() |
#26 |
Member
Iscritto dal: Dec 2006
Messaggi: 185
|
Si, non ci sono errori in compilazione.
Il problema è che non so da dove ricavare l'output, le linee dove sono salvate? ![]() |
![]() |
![]() |
![]() |
#27 | |
Bannato
Iscritto dal: Jan 2003
Città:
Messaggi: 4421
|
Quote:
...la cosa piu' semplice da fare è quella di scorrere l'array ottenuto e stampare a video ogni singola stringa contenuta... ...ciao Andrea... |
|
![]() |
![]() |
![]() |
#28 | |
Member
Iscritto dal: Dec 2006
Messaggi: 185
|
Quote:
Codice:
String line = fIN.readLine(); while(line != null) { inputFile.add(line); line = fIN.readLine(); } Iterator iterator = inputFile.iterator(); while (iterator.hasNext()){ line = (String) iterator.next(); if (line.indexOf("administrator") != -1) iterator.remove(); } |
|
![]() |
![]() |
![]() |
#29 |
Bannato
Iscritto dal: Jan 2003
Città:
Messaggi: 4421
|
...basta un ciclo for...
Codice:
for(int i=0;i<inputFile.size();i++) System.out.println(inputFile.get(i)); |
![]() |
![]() |
![]() |
#30 |
Member
Iscritto dal: Dec 2006
Messaggi: 185
|
In output escono tutte le righe
![]() |
![]() |
![]() |
![]() |
#31 |
Bannato
Iscritto dal: Jan 2003
Città:
Messaggi: 4421
|
...le linee corrette dovrebbero essere all'interno dell'arrayList...sempre che la condizione usata per eliminare le stringhe errate non usi una logica sbagliata...e sempre che le linee eliminate siano state tolte dalla lista e non dall'iteratore usato per scorrerle...
...ciao Andrea... |
![]() |
![]() |
![]() |
#32 |
Member
Iscritto dal: Dec 2006
Messaggi: 185
|
QUOTE=ally;28128253]...le linee corrette dovrebbero essere all'interno dell'arrayList...sempre che la condizione usata per eliminare le stringhe errate non usi una logica sbagliata...e sempre che le linee eliminate siano state tolte dalla lista e non dall'iteratore usato per scorrerle...
...ciao Andrea...[/quote] Codice:
import java.io.*; import java.lang.*; import java.util.*; class Log { public static void main (String args[]) { String s=null; List inputFile = new ArrayList(); try { FileReader f = new FileReader("protezione.txt"); BufferedReader fIN = new BufferedReader(f); String line = fIN.readLine(); while(line != null) { inputFile.add(line); line = fIN.readLine(); } Iterator iterator = inputFile.iterator(); while (iterator.hasNext()){ line = (String) iterator.next(); if (line.indexOf("administrator") != -1) iterator.remove(); //inputFile.remove(line) } for(int i=0;i<inputFile.size();i++) System.out.println(inputFile.get(i)); } catch(IOException e) { System.out.println("Si e' verificata un'eccezione "+e.getMessage()); } }} inputFile.remove(line) dovrebbe cancellarle dalla lista e non dall'iteratore giusto? |
![]() |
![]() |
![]() |
#33 | |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
Il metodo remove dell'iteratore rimuove dalla collezione sottostante (cioè quella che ha fornito l'iteratore stesso) l'ultimo elemento che è stato restituito dal metodo next dell'iteratore. Se hai dubbi su qualche metodo consulta i javadoc ![]() Il problema è un'altro: tu nel tuo codice fai tutto tranne che alla fine scrivere la lista filtrata sul file di output...
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) Ultima modifica di banryu79 : 07-07-2009 alle 12:24. |
|
![]() |
![]() |
![]() |
#34 |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Se comunque alla fine ti stampa tutte le righe vuol dire che c'è un problema con il controllo della condizione per la rimozione.
questa dovrebbe essere giusta: Codice:
Iterator iterator = inputFile.iterator(); while (iterator.hasNext()) { line = (String) iterator.next(); if (line.indexOf("Administrator") == -1) iterator.remove(); }
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
![]() |
![]() |
![]() |
#35 |
Member
Iscritto dal: Dec 2006
Messaggi: 185
|
Codice:
import java.io.*; import java.lang.*; import java.util.*; class Log { public static void main (String args[]) { String s=null; List inputFile = new ArrayList(); try { FileReader f = new FileReader("protezione.txt"); BufferedReader fIN = new BufferedReader(f); String line = fIN.readLine(); while(line != null) { inputFile.add(line); line = fIN.readLine(); } Iterator iterator = inputFile.iterator(); while (iterator.hasNext()) { line = (String) iterator.next(); if (line.indexOf("Administrator") == -1) iterator.remove(); } for(int i=0;i<inputFile.size();i++) System.out.println(inputFile.get(i)); } catch(IOException e) { System.out.println("Si e' verificata un'eccezione "+e.getMessage()); } }} In esecuzione dice : Exception in thread "main" java.lang OutOfMemoryError: Java heap space cos'è? |
![]() |
![]() |
![]() |
#36 | |||
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
Non so come mai: ma il file protezione.txt quanto grande è? Comunque ho provato il codice che hai costruito fino a qui e postato con un file di input così fatto: Quote:
Quote:
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|||
![]() |
![]() |
![]() |
#37 |
Member
Iscritto dal: Dec 2006
Messaggi: 185
|
Grazie 1000
![]() Allora quelle righe sono soltanto una piccolissima parte del file "protezione.txt" , le ho prese come esempio. Compilando il codice per queste poche righe in effetti funziona correttamente come testato da te. ![]() Quando ho provato ad eseguirlo sul file intero mi ha dato che messaggio di errore. Il file protezione intero è grande 32 MB ![]() Se esiste un metodo per evitare quel problema bene, altrimenti bene lo stesso perchè l'algoritrmo funziona. Sapevo che Java aveva una quantità impressionante di classi e metodi, infatti questi non li conoscevo. Grazie infinite lo stesso ![]() ![]() |
![]() |
![]() |
![]() |
#38 | ||
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
Io con ste cose non ci azzecco: non mi ricordo mai di default quant'è: a te basterebbe specificare l'ordine di grandezza successivo (es: se è 32M ne chiedi 64M, se è 64M ne chiedi 128M e così via). Quote:
Trovi tutto online (con la possibilità di scaricarti in locale la documentazione che ti interessa); due sono le risorse più utili, secondo me: 1) i javadoc del JDK 2) Quella cosa chiamata "The Really Big Index" (compendio di tutorial della Sun su quasi tutto quello che vorresti sapere del linguaggio Java e del JDK).
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
||
![]() |
![]() |
![]() |
#39 | |
Bannato
Iscritto dal: Jan 2003
Città:
Messaggi: 4421
|
Quote:
...ciao Andrea... |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:58.