|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Jul 2005
Messaggi: 584
|
[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". ![]() ![]() ![]() |
![]() |
![]() |
![]() |
#2 | |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
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.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Jul 2005
Messaggi: 584
|
potresti spiegarmi meglio come funziona?
![]() |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: May 2005
Città: Roma
Messaggi: 7929
|
mmmmm, questa scanner prima o poi dovrò impararla
![]() 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ì: Codice:
char i=Vector.get(1).charAt(0); if(i==1)//stampa ok else altrimenti ![]() anzi, è questa: http://java.sun.com/javase/6/docs/api/
__________________
My gaming placement |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Jul 2005
Messaggi: 584
|
ma con la classe scanner è quindi più semplice?
|
![]() |
![]() |
![]() |
#6 | |
Senior Member
Iscritto dal: Jul 2005
Messaggi: 584
|
Quote:
![]() |
|
![]() |
![]() |
![]() |
#7 |
Bannato
Iscritto dal: Jan 2003
Città:
Messaggi: 4421
|
...potresti anche splittare la riga in base alle virgole che separano i numeri in essa contenuti...
String[] numeriRiga = rigaLetta.split(","); ...ciao... |
![]() |
![]() |
![]() |
#8 | |
Senior Member
Iscritto dal: May 2005
Città: Roma
Messaggi: 7929
|
Quote:
guarda, forse in passato già te l'ho chiesto, o te lo ha chiesto qualc'unaltro, ma mi dici perchè metti tutti questi puntini ![]() ![]() 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...... ![]() [/ot]
__________________
My gaming placement |
|
![]() |
![]() |
![]() |
#9 | |
Bannato
Iscritto dal: Jan 2003
Città:
Messaggi: 4421
|
Quote:
...ora basta ot...altrimenti per rimediare dovremo postare ad hello il codice completo... ...ciao... |
|
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Jul 2005
Messaggi: 584
|
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 ![]() |
![]() |
![]() |
![]() |
#11 | |
Bannato
Iscritto dal: Feb 2003
Città: Anche Chuck Norris usa Debian e Gnome
Messaggi: 1266
|
Quote:
![]() ![]() |
|
![]() |
![]() |
![]() |
#12 |
Bannato
Iscritto dal: Jan 2003
Città:
Messaggi: 4421
|
...posto il codice della possibile soluzione usando il trim...
Codice:
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(); } } } |
![]() |
![]() |
![]() |
#13 | |
Senior Member
Iscritto dal: May 2005
Città: Roma
Messaggi: 7929
|
Quote:
![]() ![]() ![]() ![]() ![]() ![]() ![]()
__________________
My gaming placement |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 22:40.