View Full Version : [java] leggere un file di testo e memorizzare in array
dovrei fare in java un programma che legge un file di testo, esempio prova.txt il cui contenuto è scritto su due linee in questo modo:
2.10, 1.2
5.567, 2.5
e memerizzare in un array di 4 elementi i valori
2.10
1.2
5.567
2.5
inoltre dovrei vedere se il primo carattere del secondo elemento nell'array inizia per 1 stampando poi a video tutto l'array e il messaggio "il secondo elemento dell'array inizia/non inizia con 1".
:help: :help: :help:
dovrei fare in java un programma che legge un file di testo, esempio prova.txt il cui contenuto è scritto su due linee in questo modo:
2.10, 1.2
5.567, 2.5
e memerizzare in un array di 4 elementi i valori
2.10
1.2
5.567
2.5Ma l'array è monodimensionale, quindi?
Comunque puoi usare la classe java.util.Scanner. Però dovrai fare attenzione a due cose: ai delimitatori (che devi impostare tu) e a come convertire il valore.
Se non l'hai mai vista/usata, ti suggerisco di leggere la documentazione di Scanner.
potresti spiegarmi meglio come funziona? :help:
franksisca
01-07-2007, 09:15
mmmmm, questa scanner prima o poi dovrò impararla:D
Io farei così:
Creerei un BufferedReader per leggere da file, e poi, ad ogni readline() applicherei uno stringTokenizer con i delimitatori che voglio, e aggiungerei ogno token al Vettore precedentemente costruito.
Se naturalmente non sai quanti numeri ci sono, costruisci un vector e il gioco è fatto.
po fai così:
char i=Vector.get(1).charAt(0);
if(i==1)//stampa ok
else altrimenti
spero di essere stato chiaro, comunque siccome ho sentito che la classe scanner semplifica un paio di bilioni di operazioni, cerca sulla documentazione quella ;)
anzi, è questa: http://java.sun.com/javase/6/docs/api/
ma con la classe scanner è quindi più semplice?
mmmmm, questa scanner prima o poi dovrò impararla:D
Io farei così:
Creerei un BufferedReader per leggere da file, e poi, ad ogni readline() applicherei uno stringTokenizer con i delimitatori che voglio, e aggiungerei ogno token al Vettore precedentemente costruito.
Se naturalmente non sai quanti numeri ci sono, costruisci un vector e il gioco è fatto.
po fai così:
char i=Vector.get(1).charAt(0);
if(i==1)//stampa ok
else altrimenti
spero di essere stato chiaro, comunque siccome ho sentito che la classe scanner semplifica un paio di bilioni di operazioni, cerca sulla documentazione quella ;)
anzi, è questa: http://java.sun.com/javase/6/docs/api/
grazie!!! ;)
...potresti anche splittare la riga in base alle virgole che separano i numeri in essa contenuti...
String[] numeriRiga = rigaLetta.split(",");
...ciao...
franksisca
01-07-2007, 11:15
...potresti anche splittare la riga in base alle virgole che separano i numeri in essa contenuti...
String[] numeriRiga = rigaLetta.split(",");
...ciao...
guarda, forse in passato già te l'ho chiesto, o te lo ha chiesto qualc'unaltro, ma mi dici perchè metti tutti questi puntini:confused: :confused:
tranquillo, non voglio litigare o flammare, è pura curiosità...cioè, se fosse la k potrei pensare abitudine da cellulare per risparmiare caratteri, ma questo non è il caso.
anche io uso i puntini...ma per mettere una "pausa" nel discorso, tu inizi e finisci sempre, tutte le frasi di tutti i thread e di tutti i post......:D
guarda, forse in passato già te l'ho chiesto, o te lo ha chiesto qualc'unaltro, ma mi dici perchè metti tutti questi puntini:confused: :confused:
tranquillo, non voglio litigare o flammare, è pura curiosità...cioè, se fosse la k potrei pensare abitudine da cellulare per risparmiare caratteri, ma questo non è il caso.
anche io uso i puntini...ma per mettere una "pausa" nel discorso, tu inizi e finisci sempre, tutte le frasi di tutti i thread e di tutti i post......:D
...mh...i puntini mi danno un senso "colloquiale"...emula un po' le pause che sia vrebbero in un discorso normale...una sorta di virgola da forum...li avevo cominciati ad usare in piazzetta...poi sono diventati un abitudine...spero non diano fastidio...
...ora basta ot...altrimenti per rimediare dovremo postare ad hello il codice completo...
...ciao...
ho provato con stringTokenizer è funziona, quindo ho deciso di provare anche utilizzando la classe scanner ma con questa legge le righe senza dividermi i numeri:
import java.io.*;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
try {
Scanner s = new Scanner(new File("prova.txt ")).useDelimiter(" ,");
while (s.hasNextLine()) {
String riga = s.nextLine();
System.out.println(riga);
}
s.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
cioè legge le righe e le stampa così come sono senza suddividere i numeri:
2.10, 1.2
5.567, 2.5
:help:
redcloud
01-07-2007, 18:40
...mh...i puntini mi danno un senso "colloquiale"...emula un po' le pause che sia vrebbero in un discorso normale...una sorta di virgola da forum...li avevo cominciati ad usare in piazzetta...poi sono diventati un abitudine...spero non diano fastidio...
...ora basta ot...altrimenti per rimediare dovremo postare ad hello il codice completo...
...ciao...
No sai cos'è, il cervello di franksisca non compila con tutti quei puntini e gli si ingrippa il sistema nervoso :D SIGSEGV :sofico:
...posto il codice della possibile soluzione usando il trim...
public class HelloProblem {
public static void main(String[] args) {
File file = new File("C:\\elenco.txt");
FileInputStream fis = null;
BufferedInputStream bis = null;
DataInputStream dis = null;
try {
fis = new FileInputStream(file);
bis = new BufferedInputStream(fis);
dis = new DataInputStream(bis);
String[] numeriRiga = null;
String testoLetto;
while (dis.available() != 0) {
testoLetto = dis.readLine();
if(testoLetto.indexOf(",")>-1)
numeriRiga = testoLetto.split(",");
for(int i=0;i<numeriRiga.length;i++)
System.out.println(numeriRiga[i]);
}
fis.close();
bis.close();
dis.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
...ciao...
franksisca
01-07-2007, 19:09
No sai cos'è, il cervello di franksisca non compila con tutti quei puntini e gli si ingrippa il sistema nervoso :D SIGSEGV :sofico:
:D :D :D infatti....mi dà warning a gogo:D :D :D :D
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.