PDA

Visualizza la versione completa : [Java] Conteggio linee file & Random


keratox
01-05-2004, 20:21
Per contare le linee di un file (di circa 20 righe) ho usato questo codice:



try{
String url = "...\\...\\parole.txt";
FileReader fr = new FileReader(url);
BufferedReader br = new BufferedReader(fr);
LineNumberReader lnr = new LineNumberReader(br);
totale = lnr.getLineNumber();
System.out.println("Il totale delle parole e' : " + totale);
} catch(FileNotFoundException fnfe){ }


ma mi ritorna 0

poi, per stampare tre parole random, ho scritto questo



//nw č il numero di parole da scrivere
Random casuale;
for(int k=1;k<nw;k++){
casuale = new Random();
casuale2 = casuale.nextInt(totale);
System.out.println("La parola trovata e' di numero " + casuale2);
// o anche + casuale
}


e non solo non mi funzica, ma mi restituisce quest'errore su dos:


java.lang.IllegalArgumentException: n must be positive
at java.util.Random.nextInt(Random.java:251)
at sparola.paint(sparola.java:66)
at sun.awt.RepaintArea.paint(RepaintArea.java:177)
at sun.awt.windows.WComponentPeer.handleEvent(WCompon entPeer.java:260)
at java.awt.Component.dispatchEventImpl(Component.jav a:3678)
at java.awt.Container.dispatchEventImpl(Container.jav a:1627)
at java.awt.Window.dispatchEventImpl(Window.java:1606 )
at java.awt.Component.dispatchEvent(Component.java:34 77)
at java.awt.EventQueue.dispatchEvent(EventQueue.java: 456)
at java.awt.EventDispatchThread.pumpOneEventForHierar chy(EventDispatchTh
read.java:201)
at java.awt.EventDispatchThread.pumpEventsForHierarch y(EventDispatchThre
ad.java:151)
at java.awt.EventDispatchThread.pumpEvents(EventDispa tchThread.java:145)

at java.awt.EventDispatchThread.pumpEvents(EventDispa tchThread.java:137)

at java.awt.EventDispatchThread.run(EventDispatchThre ad.java:100)



Ciao ciao

netarrow
03-05-2004, 23:40
Ho risolto il problema:
- per contare le righe:

import java.io.*;
import java.util.*;

public class Conta {
public static void main(String args[]) throws Exception {
String str = new String();
FileReader f = new FileReader("NomeFile.txt");
BufferedReader br = new BufferedReader(f);
Vector v = new Vector();
try {
while((str = br.readLine()) != null) {
v.add(str);
}
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("Righe: " + v.size());
}
}

- per trovare 3 parole a random direi di scegliere una frase a caso, dividerla in tokens e sceglierne a caso tre.(se ho tempo faccio il codice anche per questo)

N.B Nella lista degli errori ho visto eccezioni di awt, eventi ecc...
Controlla meglio il codice.

Ciao

Sergio Pedone
03-05-2004, 23:56
Ciao keratox.
Per contare le righe di un file utilizzando la classe
LineNumberReader, devi leggere il file riga per riga.
Questa classe tiene conto delle righe lette.
Ti posto un poco di codice chiarificatore.


import java.io.*;

public class ContaRigheFile {

public static void main(String[] args) {
try{
String filename = args[0];
FileReader fr = new FileReader(filename);
BufferedReader br = new BufferedReader(fr);
LineNumberReader lnr = new LineNumberReader(br);
int totale = 0;
while(lnr.readLine() != null) {
totale++;
}
System.out.println("Il totale delle parole e' : " + totale);
} catch (FileNotFoundException fnfe){
System.err.println("File non trovato.");
System.err.println(fnfe.getLocalizedMessage());
} catch (IOException ioe) {
System.err.println("Errore di I/O.");
System.err.println(ioe.getLocalizedMessage());
}
}

}


Ciao.

keratox
04-05-2004, 08:31
Ah grazie a tutti per gli interventi! :)
Non appena avro' tempo applichero' ciņ che mi avete detto al mio prog.

ciao ciao :ciauz:

Loading