View Full Version : Java stringhe
sto scrivendo un programmino java che legge da un file dei dati e me li estrae..il programma è questo (copio solo la parte principale):
try {
FileReader reader = new FileReader(in_file);
BufferedReader buf_reader = new BufferedReader(reader);
String aula = null;
String image = null;
String tutto = null;
char cf;
//StringBuffer str;
char str[];
str = new char [25];
int c,i;
i = 0;
while ( (c = buf_reader.read()) != -1){
if((char)c != '§'){
str[i] = (char)c;
i++;
}else if((char) c == '§'){
tutto = new String (str);
aula = tutto.substring(0,tutto.indexOf('#'));
image = tutto.substring(tutto.indexOf('#')+1,tutto.indexOf(".gif"));
System.out.println(aula+" "+image);
if(aula.equals("G")){
System.out.println("uguale");
}
str = new char[25];
tutto = null;
aula = "";
image="";
i=0;
}
}
ora il prolema è quando faccio questo if(aula.equals("G")){
System.out.println("uguale");
}
in pratica la prima riga del file me la riconosce quelle successive no.. cosa potrebbe essere? ho provato anche a fare dentro al ciclo un aule.charAt(0) e mi resistuisce solo la lettera estratta dalla prima riga.. cosa c'è che nn va?
grazie..ciao =)
Originariamente inviato da SteR9
in pratica la prima riga del file me la riconosce quelle successive no.. cosa potrebbe essere?
posta le prime righe di questo file.
ma come mai leggi un byte alla volta?
non ti conviene acquisire una riga alla volta e poi separare aula, image,ecc.ecc.?
MSciglio
24-03-2005, 23:00
Prova a usare compareTo invece di equals.
leggo un byte alla volta perchè uso j2me e a quanto pare si può fare solo così..
le prime righe sono queste
import java.io.*;
import java.net.*;
import java.awt.*;
import javax.swing.*;
import java.util.*;
import java.sql.*;
public class leggiLista {
public static void main(String args[])
{
String in_file = "aule.txt";
non penso che sia qua il problema..ho provato sia compareTo che equals ma non va..
MSciglio
24-03-2005, 23:16
Se non specifichi il contenuto del file che intendi leggere e cosa vuoi estrarre non è che ti si possa aiutare molto.
il file è strutturato così
aula#immagine§
es:
AA#immagine.gif§
BB#immagineB.gif§
CC#immagineC.gif§
in pratica me li estrae tutti però nell'if riconosce solo AA e non tutti gli altri..
(§ lo uso come ritorno a capo perchè mi dava dei problemi con \n)
MSciglio
24-03-2005, 23:33
Non ho capito cosa vuoi fare con questo if:
if(aula.equals("G")){
System.out.println("uguale");
}
Estrai aula e image, e l'if?
Originariamente inviato da MSciglio
Non ho capito cosa vuoi fare con questo if:
if(aula.equals("G")){
System.out.println("uguale");
}
Estrai aula e image, e l'if?
l'if mi serve dopo perchè faccio una ricerca.. in questo caso è solo un if di prova per vedere se mi trova l'aula cercata..
ho provato a controllare la lunghezza di aula e tutte tranne la prima sono più lunghe di 2 caratteri che però non vengono visualizzati.. che cavolo di caratteri sono?!
Originariamente inviato da SteR9
non penso che sia qua il problema..ho provato sia compareTo che equals ma non va..
sì non penso neanch'io, ti avevo chiesto il contenuto del file che leggi, non del sorgente :D
ho visto che l'hai postato dopo ;)
Originariamente inviato da SteR9
ho provato a controllare la lunghezza di aula e tutte tranne la prima sono più lunghe di 2 caratteri che però non vengono visualizzati.. che cavolo di caratteri sono?!
nella system.out che c'e' nel codice come stampa i codici aula? sono corretti?
Originariamente inviato da SteR9
ho provato a controllare la lunghezza di aula e tutte tranne la prima sono più lunghe di 2 caratteri che però non vengono visualizzati.. che cavolo di caratteri sono?!
Secondo me sono il ritorno a capo che non leggi correttamente...
MSciglio
25-03-2005, 09:33
Originariamente inviato da Angus
Secondo me sono il ritorno a capo che non leggi correttamente...
Anche secondo me è il carattere di ritorno a capo.
prova a farti un Sistem.out carattere per carattere quando li leggi in questo modo puoi vedere i caratteri letti se sono giusti o meno...
Poi perchè non usi readLine() non ti dorebba dare problemi con gli invii.
Ciao
^TiGeRShArK^
25-03-2005, 14:07
cmq il ritorno a capo dipende dalla piattaforma....
a volte si usa <CR>, a volte <CR>+<LF>(Carriage Return + Line Feed)...
su windows se nn erro dovrebbe essere \r\n.....
il codice ASCII dovrebbe essere 13 x il CR e 10 x LF.....
facendo con System.out è tutto ok..
il ritorno a capo che problemi potrebbe dare?
tglman non posso usare readLine perchè sto programmando in j2me e funziona solo read..
il problema stava proprio nel ritorno a capo..ho tolto tutti i ritorno a capo dal file tanto c'è § che mi divide..
MSciglio
25-03-2005, 19:50
Originariamente inviato da SteR9
il problema stava proprio nel ritorno a capo..ho tolto tutti i ritorno a capo dal file tanto c'è § che mi divide..
Puoi semplicemente leggere e ignorare il carattere.
^TiGeRShArK^
26-03-2005, 11:02
infatti bastava mettere nell 'if di non fare niente quando ricevevi il carattere ASCII 13 e il carattere ASCII 10
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.