PDA

View Full Version : [JAVA] Esercizio


btrfly
24-10-2008, 01:39
Salve,
mi servirebbe un aiutino...

Devo fare un programma che legge delle domande da un file di testo e le mette in un array, in modo da poterle scegliere casuali.

Praticamente nel mio file txt ogni domanda rappresenta una riga di testo e io vorrei mettere ogni riga in una posizione dell'array.. Esiste un modo per farlo??

So che la classe Filereader legge un testo ma nn saprei come metterlo nell'array.

Grazie.

azarius
24-10-2008, 06:29
Potresti iterare un ciclo...

Prima magari puoi far avviare un contatore che conta le righe del file txt non nulle e con il numero di questo contatore generi la dimensione dell'array.

Poi puoi iterare un ciclo che va dalla prima a l'ultima riga non nulla e salva ogni stringa di testo in una posizione dell'array.

Oceans11
24-10-2008, 08:40
Potresti iterare un ciclo...

Prima magari puoi far avviare un contatore che conta le righe del file txt non nulle e con il numero di questo contatore generi la dimensione dell'array.

Poi puoi iterare un ciclo che va dalla prima a l'ultima riga non nulla e salva ogni stringa di testo in una posizione dell'array.

Oppure non usi array ma una collezione dinamica, tipo ArrayList<String>.
Per la lettura di una riga alla volta, devi incapsulare FileReader in un BufferedReader, e poi richiami il metodo readLine().

PS: leggi qui (http://hwupgrade.it/forum/showthread.php?t=1649196) e poi modifica il nome del thread

futu|2e
24-10-2008, 17:12
public static void main(String[] args)
{
String path = "qui inserisci il path del tuo file di testo";
String rigaLetta = "";
String arrayDomanda [] = {};
int contatoreRighe = 0;
try
{
FileReader fr = new FileReader(path);
BufferedReader br = new BufferedReader(fr);

while((rigaLetta = br.readLine()) != null)
{
arrayDomanda[contatoreRighe] = rigaLetta;
contatoreRighe++;
}
}
catch(Exception ex)
{
System.out.println(ex);
}
}

dovrebbe andare

british
24-10-2008, 18:05
dovrebbe andare

Ehm, no, direi di no. Anzi, è proprio sbagliato concettualmente: l'array, in Java, non è una collezione dinamica. Infatti il tuo codice si pianta alla prima iterazione con un'eccezione che segnala lo sforamento dei limiti dell'array.
Era perfetto il consiglio di Oceans11: l'ArrayList è la scelta più facile e corretta.

ciao!

british

btrfly
24-10-2008, 19:55
Grazie dell'aiuto..

Sono una principiante.. Non so se riuscirò..Ma grazie!!

Oceans11
24-10-2008, 20:26
Dai un'occhiata al tutorial della Sun, che ti spiega come leggere un file riga per riga usando il BufferedReader, quindi ad ogni ciclo inserisci la stringa letta in un arraylist precedentemente inizializzato.

Fai delle prove e se hai problemi posta il codice ed il problema che sicuramente qualcuno ti darà volentieri una mano.


PS: non hai ancora modificato il titolo del thread. Così verrà chiuso!

btrfly
25-10-2008, 14:44
PS: non hai ancora modificato il titolo del thread. Così verrà chiuso!

Ma non è già tra parentesi []??

Oceans11
25-10-2008, 15:25
Ma non è già tra parentesi []??

ora sì....ieri quando ho postato il messaggio no.

banryu79
27-10-2008, 09:51
Aggiungo che se usi, ad esempio, ArrayList<String> per memorizzare le singole righe (quindi le singole domande) dopo puoi ottenre facilmente un ordine casuale semplicemente utilizzando il medoto statico .shuffle() della classe java.util.Collections (http://java.sun.com/javase/6/docs/api/java/util/Collections.html#shuffle(java.util.List)), che "mescola" l'odine degli elementi nel tuo ArrayList.