Ciao a tutti, mi sono approcciato da pochissimo allo studio di Java e non riesco a capire perchè il mio seguente programma non funzioni correttamente:
/*
1)Utilizzare Scanner per leggere un numero in virgola mobile x.
2)Convertire x in un valore intero e memorizzarlo in y.
3)Visualizzare in maniera distinta x e y.
4)Convertire x in un valore di tipo byte e memorizzare il risultato in z.
5)Visualizzare in maniera distinta x e z.
*/
import java.util.Scanner;
public class Esercizio2 {
public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
double x;
int y;
byte z;
//Passo 1:
System.out.print("Inserisci un numero reale: ");
x = keyboard.nextDouble();
//Passo 2:
y = (int) x;
//Passo 3:
System.out.print("x = " + x);
System.out.print("\ny = " + y);
//Passo 4:
z = (byte) x;
//Passo 5:
System.out.print("\nz = " + z);
}
}
Non riesco a capire perchè
1) Se inserisco, per esempio il valore: 12.345 la console visualizza questo:
Inserisci un numero reale: 12.345
x = 12345.0
y = 12345
z = 57
2) Se inserisco solamente uno o due valori dopo la virgola (per esempio 12.3 o 12.34) il programma mi da il seguente errore:
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextDouble(Unknown Source)
at Esercizio2.main(Esercizio2.java:23)
Sapete aiutarmi?