• Regolamento Macrocategoria DEV
    Prima di aprire un topic nella Macrocategoria DEV, è bene leggerne il suo regolamento. Sei un'azienda o un hosting/provider? Qui sono anche contenute informazioni per collaborare con Sciax2 ed ottenere l'accredito nella nostra community!

Problema risolto [JAVA] I file

LoScroccone

Utente Assiduo
Autore del topic
26 Dicembre 2010
536
0
Miglior risposta
0
Ciao ragazzi, mi hanno assegnato un compito che dovrebbe fare:
leggere un file di testo e contare carattere, parole e frasi al suo interno.
Allora io :

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

Come faccio a confrontare un char con sto dannato spazioooo?? grazie :emoji_slight_smile:
 
Ciao ragazzi, mi hanno assegnato un compito che dovrebbe fare:
leggere un file di testo e contare carattere, parole e frasi al suo interno.
Allora io :

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

Come faccio a confrontare un char con sto dannato spazioooo?? grazie :emoji_slight_smile:
la condizione è
if (c==' ')


per non forzare il ciclo usa un Do - While
anyway read devi chiamarlo una volta sola , altrimenti passa ai byte successivi :soso: @LoScroccone

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

tra l'altro potresti usare anche ReadLine() che restituisce una stringa direttamente.
 
Ultima modifica:
Inserendo:ciao ciao
Mi dice 9 caratteri e 1 parola.
Quindi quando viene restituito -1 devo contare una parola? il perchè mi dice 9 caratteri mi sembra strano @TBH
 
Inserendo:ciao ciao
Mi dice 9 caratteri e 1 parola.
Quindi quando viene restituito -1 devo contare una parola? il perchè mi dice 9 caratteri mi sembra strano @TBH

9 caratteri :

ciao (4) + spazio (1) + ciao (4) =9
parola deve essere inizializzata a 1
se li spazi non li conti come caratteri devi mettere l'else invece che a ogni ciclo di lettura incrementarli :soso:
 
Ok. capito. :emoji_slight_smile:

Adesso ho modificato un po il codice per completare l'intero esercizio seconto il testo.

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

Però inserisco nel file:ciao, sono mario ho. 52 ani.

e mi risulta:
I caratteri sono: 19 al posto di 20
Le parole sono: 6 ok
Le frasi sono: 3 ok
 
Ultima modifica:
Ok. capito. :emoji_slight_smile:

Adesso ho modificato un po il codice per completare l'intero esercizio seconto il testo.

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

Però inserisco nel file:ciao, sono mario ho. 52 ani.

e mi risulta:
I caratteri sono: 19 al posto di 20
Le parole sono: 6 ok
Le frasi sono: 3 ok

ci sono un paio di errori , quando prende un punto o punto e virgola per esempio aumenta i caratteri.
Invece devi tener conto che l'ultimo giro del ciclo ilo valore è -1 quindi o escludi un elemento o nel else controlli che sia diverso da -1
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!


ovviamente puoi anche modificare il codice usando continue , quando controlli le frasi e andrebbe lo stesso bene , aggiungendo solo però il controllo sul carattere. ^^
 
Ultima modifica:
  • Like
Reactions: 1 person
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

Sta volta
I caratteri sono: 15
Le parole sono: 6
Le frasi sono: 3
O.o

ma nel codice che ti ho scritto non c'è carat-- se c'è lo spazio :| ovvio che ti da 15
che tra l'altro sono 20 caratteri -5 spazi (dato che quando c'è spazio decrementi a random) =15 ,ed ecco perché ti esce 15 :soso:
 
Ultima modifica:
  • Like
Reactions: 1 person
Scusate il ritardo volevo postare una soluzione aggiuntiva tanto per..

public class contaCarattere
{
boolean finish;
FileWriter f;
BufferedReader b;
String percorso;
String testo;
int n_caratteri;
int n_frasi;
int n_parole;
static contaCarattere cc;


public static void main(String args[])
{
int exit=0;
BufferedReader tastiera=new BufferedReader(new InputStreamReader(System.in));


while(exit==0)
{




System.out.println("Inserisci percorso file:");
cc=new contaCarattere(tastiera.readLine());
if(cc.finish)
{
System.out.println("Per terminare inserire 1, altrimenti inserire 0");
exit=Integer.parseInt(tastiera.readLine());
}








}
}













contaCarattere(String percorso_file){

finish=false;

n_caratteri=0;
n_frasi=0;
n_parole=0;

testo="";

try
{
f=new FileWriter(percorso_file);
b=new BufferedReader(f);

String temp;
temp=b.readLine();


while(temp!=null)
{
testo=testo+temp;
temp=b.readLine();
}

n_caratteri=testo.length;

for(int i=0;i<testo.length;i++)
{
if(testo.charAt(i)=='.')
{
n_frasi++;
}
}

for(int i=0;i<testo.length-1;i++)
{
if(testo.charAt(i)==' '&&testo.charAt(i+1)!=' ')
{
n_parole++;
}
}
}
catch(IOException e)
{
e.printStackTrace();

}


System.out.println("N_Caratteri:"+n_caratteri);
System.out.println("N_Frasi:"+n_frasi);
System.out.println("N_Parole:"+n_parole);
finish=true;


}

















}
 
Ultima modifica:
@Noyz Herb nel secondo ciclo for è da i=0 a i<testo.length -1 , perché nel if fai il controllo al carattere successivo ^^.
Inoltre se è possibile è sempre meglio eseguire un numero maggiori di operazioni in unico ciclo che in più cicli.
In effetti , dato che si trattavano di file testuali usare readLine semplifica ;)

Comunque rinomino in quanto il problema è risolto ^^
 
Ah no hai ragione errore banale da 4 soldi scusatemi ahahah aggiusto.

:bye:
 
Ultima modifica: