NICOD.
20-12-2008, 19:07
Premetto che ho cominciato a studiare Java da manuale e comincio a fare qualche programmino stupido per il momento.
Come ambiente utilizzo Windows Xp e come compilatore Java utilizzo Eclipse.
Allora ho creato un semplice programma che vi posto..
class LeggiCar {
/*Il programma esce se viene inserito un '.' e conta anche gli spazi che eventualmente vengono inseriti. ATTENZIONE IL PROGRAMMA LEGGE UN SOLO CARATTERE ALLA VOLTA QUINDI O SPAZIO O '.' O CARATTERE QUALSIASI */
public static void main(String args[])
throws java.io.IOException {
char ch;
int sp = 0;
System.out.println("Inserisci il carattere . per terminare l'esecuzione");
ch = (char) System.in.read();
while (ch != '.'){
System.out.println("Inserisci il carattere . per terminare l'esecuzione");
ch = (char) System.in.read();
if(ch == ' ')
sp++;
}
System.out.println("Il numero di spazi inseriti è " + sp);
}
}
Il problema è che mi stampa System.out.println("Inserisci il carattere . per terminare l'esecuzione"); che è all'interno del while 3 volte esatte.
Come potete vedere dall'immagine
http://img511.imageshack.us/img511/1215/consolerz3.jpg
Ho pensato che siccome Java utilizza un buffer a righe, quando premo invio lo conta come carattere e quindi non mi chiede conferma e stampa ulteriormente il messaggio poichè la variabile ch è diversa da '.'
Non so più a cosa pensare visto che in ambiente MAC la stampa avviene 2 volte e quindi è concepibile per il motivo che ho gia spiegato.
Qualcuno almeno è in grado di fare luce sulla questione?
Grazie ;)
Come ambiente utilizzo Windows Xp e come compilatore Java utilizzo Eclipse.
Allora ho creato un semplice programma che vi posto..
class LeggiCar {
/*Il programma esce se viene inserito un '.' e conta anche gli spazi che eventualmente vengono inseriti. ATTENZIONE IL PROGRAMMA LEGGE UN SOLO CARATTERE ALLA VOLTA QUINDI O SPAZIO O '.' O CARATTERE QUALSIASI */
public static void main(String args[])
throws java.io.IOException {
char ch;
int sp = 0;
System.out.println("Inserisci il carattere . per terminare l'esecuzione");
ch = (char) System.in.read();
while (ch != '.'){
System.out.println("Inserisci il carattere . per terminare l'esecuzione");
ch = (char) System.in.read();
if(ch == ' ')
sp++;
}
System.out.println("Il numero di spazi inseriti è " + sp);
}
}
Il problema è che mi stampa System.out.println("Inserisci il carattere . per terminare l'esecuzione"); che è all'interno del while 3 volte esatte.
Come potete vedere dall'immagine
http://img511.imageshack.us/img511/1215/consolerz3.jpg
Ho pensato che siccome Java utilizza un buffer a righe, quando premo invio lo conta come carattere e quindi non mi chiede conferma e stampa ulteriormente il messaggio poichè la variabile ch è diversa da '.'
Non so più a cosa pensare visto che in ambiente MAC la stampa avviene 2 volte e quindi è concepibile per il motivo che ho gia spiegato.
Qualcuno almeno è in grado di fare luce sulla questione?
Grazie ;)