PDA

View Full Version : Domanda riguardo a Java


Goasoul
03-02-2008, 21:47
Ciao a tutti!! Sono un nuovo utente e sono studente di informatica. Ho appena cominciato a trattare Java e mi sto confrontando con un problema che proprio non capisco, se qualcuno può essermi utile ne sarei grato.

il mio problema è il seguente:

import java.io.IOException;

public class PariDispari {
public static void main(String[] args) throws IOException {

System.out.println("Immetti un numero: ");
int x= System.in.read();
int y = x % 2;

if(y == 0)

System.out.println("Il risultato e': " + y + " quindi la variabile x e' pari" );
else
System.out.println("Il risultato e': " + y + " quindi la variabile x e' dispari");
}
}
Il suo risultato è errato:

Immetti un numero:
10
Il risultato e': 1 quindi la variabile x e' dispari

Mentre se modifico la variabile x e la setto dichiarandola x = 10;

L'output è corretto:

Il risultato e': 0 quindi la variabile x e' pari

Grazie in anticipo per vostro aiuto.:muro:

k0nt3
03-02-2008, 22:10
magari il codice mettilo tra i tag CODE e /CODE
comunque è naturale che il risultato è sbagliato :D infatti system.in.read legge solo un byte
http://java.sun.com/javase/6/docs/api/

read
public abstract int read()
throws IOException
Reads the next byte of data from the input stream. The value byte is returned as an int in the range 0 to 255. If no byte is available because the end of the stream has been reached, the value -1 is returned. This method blocks until input data is available, the end of the stream is detected, or an exception is thrown.

prova a dare un'occhiata qui http://java.sun.com/docs/books/tutorial/essential/io/cl.html

Goasoul
03-02-2008, 22:36
Grazie di tutto cuore per la celere risposta! :doh: Ora vado a leggermi il link che mi hai postato...

Ciao e grazie ancora

gokan
03-02-2008, 22:59
Ciao, prova a sostituire sopra con questo codice:

BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine();

int y = Integer.parseInt(s) % 2;


Come ti è stato detto sopra, il metodo read() legge solo un carattere, è quindi insufficiente. Sopra invece usi una stringa di lunghezza variabile che prima di essere utilizzata per generare la varibile Y deve essere convertita ad intero.

Ciao e benvenuto nel forum :)

Goasoul
04-02-2008, 13:00
Ciao Gokan!! Perfetto grazie mille ora tutto funziona alla perfezione! Ti saluto

cionci
04-02-2008, 17:30
Thread chiuso
|
V