Newsgroup: it.comp.java
Titolo: Ancora sul parsing di un file di testo

ci sto sbattendo la testa (e sono anche abbastanza digiuno di java)
ricapitolando devo leggere un file di testo contentente una 
rappresentazione di una mappa di gioco (con stanze muri e porte 
rappresentati da interi) e inserirla in una matrice (delle stesse 
dimensioni della mappa "disegnata" nel file di testo) per il momento 
riesco tranquillamente a leggere una riga alla volta come String
ho provato a leggere un carattere alla volta con il metodo charAt(int 
pos) che ovviamente mi restituisce un char se tento di convertirlo in 
int mi ritrovo con quello che dovrebbe essere il valore unicode :-/ che 
ovviamente non mi serve a nulla!
Come posso fare ad uscire da questa spinosa situazione? c'è un modo 
semplice oppure mi conviene convertire la matrice da int in char 
(mettendo delle lettere al posto dei numeri nel file della mappa) e a 
questo punto fare dei confronti tra char, e utilizzare gli indici della 
matrice per gestire gli spostamenti?
grazie ancora a tutti
Luca

Ra1n ha scritto:

se il tuo problema è riempire la matrice con degli interi sulla base
di quello che leggi sul file di testo ti serve questo:
Char carattere = charAt();
if (carattere == 'A')
{
     matrice[x] = 1;
}
cmq puoi essere più chiaro?

scusa, ma in una riga ci possono essere + numeri?
se si, come sono separati tra loro?
se c'è un carattere separatore puoi usare la java.util.StringTokenizer
Oppure se usi una virtual machine 1.4 o superiore, il metodo split()
della classe String.

 writes:
R> Come posso
R> fare ad uscire da questa spinosa situazione?
Questo  è un  problema da  "manuale" di  necessità di  un analizzatore
lessicale.
La  cosa che  ti conviene  fare è  definire cosa  è un  numero  per la
"grammatica" di quel file.
Nel tuo caso sei fortunato, sono  interi, quindi avrai che un numero è
una sequenza  che può  cominciare o  no conm "-"  (se hai  solo interi
positivi  NON inizia  con  -) ed  è  formato da  uno  o più  caratteri
dell'insieme 0-9.
Il metodo classico  ti direbbe di andare avanti  scartando i caratteri
che trovi fintanto che non trovi  un - o una cifra, il numero comincia
lì e  cominci a  tenerti quel carattere  (mettendolo in  una stringa).
Dopodiché continui  a prenderti i caratteri fintanto  che trovi cifre,
al primo carattere non cifra ti fermi ed hai il tuo "token".
Visto che hai una matrice, per il tuo file saranno importanti le righe
e le colonne.
Quindi devi andare avanti numero per numero sulla riga...
Per fortuna Java  ti mette a disposizione la già  funzione che hai già
trovato  che  legge  una  riga   di  testo  e  la  già  citata  classe
StringTokenizer() che  fa già lei  il lavoro di "tagliare  a fette"(in
token). Poi  hai già dei metodi  (i.e. in Integer)  che convertono una
stringa in un intero  e ti sputano un eccezione se il  numero non è un
intero corretto. Questi sono i pezzi che ti servono.
Utilizzare i codici dei caratteri come numeri può essere una soluzione
sopratutto  se il  range delle  coordinate ci  sta. Ma  ha  un grosso,
grosso, grosso problema.  Quel file  può essere solo scritto e letto a
macchina  come file binario,  che alcune  sequenze di  byte potrebbero
aver un  significato particolare  per il software  che c'è tra  il tuo
statement Java di lettura e il file se il file non viene letto in modo
binario.
-- 
 /\            ___
/___/\__|_|\_|__|___Gian Uberto Lauri_____________________
  //--\ | | \|  |   Integralista GNUslamico  
\/		    e allevatore di bug da competizione