|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: May 2010
Messaggi: 4
|
problema java
buon giorno a tutti ragazzi! innanzi tutto mi complimento per il bellissimo forum! volevo un aiuto nella creazione di un programma in java:
il programma da realizzare sarebbe questo: programma che preleva 5 frasi con almeno 30 caratteri da memorizzare in un file, che conta il numero di parole delle frasi inserite nel file,e mostra a video le frasi inserite ed il numero delle parole. il programma io sarei riuscito a farlo fino a metà ma non riesce a leggermi e stamparmi le frasi e il numero delle parole, sapreste aiutarmi a capire dove ho sbagliato? il programma io l'ho fatto così: import java.io.*; class finemaggio { public static void main(String args[]) { FileWriter f= null; PrintWriter fOUT=null; String frasi=""; int i=0; int h =0; int nCaratteri=0; int y=0; int n=0; try { InputStreamReader input = new InputStreamReader(System.in); BufferedReader tastiera= new BufferedReader(input); f = new FileWriter("fras.txt"); fOUT= new PrintWriter(f); for(i=0;i<5;i++) { h=i+1; System.out.println("inserisci la "+h+"° frase:"); frasi= tastiera.readLine(); nCaratteri=frasi.length(); if(nCaratteri>30) { fOUT.println(frasi); } else { System.out.println("frase troppo corta"); i--; } } } catch(Exception e) { System.out.println("errore nella scrittura del file"); } try { f.close(); } catch(Exception e ) { System.out.println("errore nella chusura del file"); } FileReader p= null; BufferedReader pIN=null; int parole=1; try { p= new FileReader("frasi.txt"); pIN= new BufferedReader(p); for(y=0;y<3;y++) { frasi=pIN.readLine(); parole=1; for(i=0;i<frasi.length(); i++) { n=y+1; if(frasi.charAt(i)==' ') { parole ++; } } } System.out.println("la"+n+" frase è:"+frasi+"ed è composta da:"+parole+" parole"); } catch(Exception e) { System.out.println("errore nella lettura del file"); } try { p.close(); } catch(Exception e ) { System.out.println("errore nella chusura del file"); } } } |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Sep 2004
Città: Cosenza
Messaggi: 2971
|
benvenuto nel forum
il codice devi inserirlo tra i tag "code" Codice HTML:
[code]tuo codice[/code] in ogni caso il tuo programmino non è sbagliato. il primo problema è che prima scrivi il file "fras.txt" e poi cerchi di leggere "frasi.txt" che ovviamente non esiste...quindi devi scrivere "frasi.txt" e non "fras.txt" il secondo è che il ciclo for per leggere il file e stampare le frasi con il numero di parole, deve andare fino a 5 e non fino a 3, ed inoltre, la stampa della frase la devi fare all'interno del ciclo. questo è il ciclo corretto: Codice:
for( y = 0; y < 5; y++ ) {
frasi = pIN.readLine();
parole = 1;
for( i = 0; i < frasi.length() ; i++ ) {
n = y + 1;
if( frasi.charAt(i) == ' ' ) {
parole++;
}
}
System.out.println( "la " + n + " frase è: " + frasi + " ed è composta da: " + parole + " parole" );
}
Quote:
perchè ovviamente si può fare tutto questo direttamente nel ciclo iniziale, senza leggere il file. ancora...conosci il metodo "split" di String? potresti usare questo metodo per ottenere dalla frase letta, un array di stringhe in cui ogni elemento è una parola della frase. quindi il numero di parole sarebbe semplicemente la dimensione dell'array e non dovresti contarlo a mano... Ultima modifica di deadlyomen17 : 22-05-2010 alle 16:49. |
|
|
|
|
|
|
#3 |
|
Junior Member
Iscritto dal: May 2010
Messaggi: 4
|
guarda non so veramente come ringraziarti sei il mio salvatore!
questa materia io l'ho iniziata da poco quindi sono ancora un novellino e il professore che me la insegna non è molto preparato si vede però ho scoperto che è di quelle classiche materie che non ci capisco niente però mi piace veramente studiarla e quando come prima grazie il tuo aiuto sono riuscito a compilare il programma ho urlato dalla gioia! essendo alle prime armi il metodo split non so ancora cosa è, in che cosa cosiste? e come si potrebbe fare tutto il programma senza l'inserimento nel file? al diavolo seguire il programma scolastico voglio saperne di piuuuuuu!!!
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Sep 2004
Città: Cosenza
Messaggi: 2971
|
ti consiglio di seguire il programma che fate a scuola, e di cercare di capire bene le cose che fate più che guardare altre cose.
quando avrai capito bene ciò che fate a scuola allora potrai approfondire cercando nella rete. una soluzione (semplice semplice) per il tuo esercizio, che scrive nel file, ma NON rilegge il file (quindi non va bene per il tuo prof) può essere questa: Codice PHP:
NB: non ho messo try-catch per rendere il codice più facile da leggere e capire, normalmente le eccezioni andrebbero gestite. |
|
|
|
|
|
#5 |
|
Junior Member
Iscritto dal: May 2010
Messaggi: 4
|
grazie mille in effetti questa opzione anche se non c'è la lettura è molto più semplice!
un ultima domanda poi giuro che non ti rompo più: nel programma che ho fatto io, una parte l'ho copiata ma non riesco davvero a capirla, il codice sarebbe questo: Codice:
for(y=0;y<3;y++)
{
frasi=pIN.readLine();
parole=1;
for(i=0;i<frasi.length(); i++)
{
n=y+1;
if(frasi.charAt(i)==' ')
{
parole ++;
}
}
System.out.println("la "+n+" frase e': "+frasi+" ed è composta da: "+parole+" da parole");
}
Codice:
for(i=0;i<frasi.length(); i++)
{
n=y+1;
if(frasi.charAt(i)==' ')
{
parole ++;
}
}
grazie in anticipo! |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Sep 2004
Città: Cosenza
Messaggi: 2971
|
Codice:
for(y=0;y<3;y++)
{
frasi=pIN.readLine();
parole=1;
for(i=0;i<frasi.length(); i++)
{
n=y+1;
if(frasi.charAt(i)==' ')
{
parole ++;
}
}
System.out.println("la "+n+" frase e': "+frasi+" ed è composta da: "+parole+" da parole");
}
infatti la prima istruzione che si fa nel for è "frasi=pIN.readLine();" ovvero, leggi una riga dal file. Deve essere y<5 proprio perchè nel file ci sono 5 righe e non 3 Codice:
for(i=0;i<frasi.length(); i++)
{
n=y+1;
if(frasi.charAt(i)==' ')
{
parole ++;
}
}
"frasi.length()" ti da il numero di caratteri presenti nella frase. quindi in questo ciclo, viene analizzata la frase carattere per carattere, quando si trova il carattere ' ' (spazio) significa che la parola che si stava leggendo è finita, quindi si aumenta di 1 il contatore delle parole facendo "parole++" per essere pignoli, ne questa ne la soluzione che ti ho dato io sarebbero perfette, perchè nel caso in cui ci siano spazi consecutivi, sarebbero contate parole in più che in realtà non ci sono |
|
|
|
|
|
#7 |
|
Junior Member
Iscritto dal: May 2010
Messaggi: 4
|
grazie mille! sei veramente un genio!
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 06:08.



















