Salut,
En guise d'exercice pour m'entraîner sur les classes etc... j'ai fait un petit programme pour convertir h décimal en sexa et inversement.
Seulement, j'ai une erreur quand je veux saisir un double décimal pour convertir. Je vous poste le code :
package test;
import test.Arrondir;
import java.util.*;
public class NombreSexagesimaux {
public static void main(String[] args) {
System.out.println("Choisir conversion décimale ou sexagésimale; tapez D ou S");
Scanner sc = new Scanner(System.in);
char reponse = sc.nextLine().charAt(0);
while((reponse != 'D') && (reponse != 'S')) {
System.out.println("Mauvaise entrée. Saisissez le bon caractère.");
reponse = sc.nextLine().charAt(0);
}
if(reponse == 'S') {
System.out.println("Entrez l'heure : ");
int p1 = sc.nextInt();
System.out.println("Entrez la minute : ");
int p2 = sc.nextInt();
System.out.println("Entrez la seconde : ");
int p3 = sc.nextInt();
SexaDeci t2 = new SexaDeci(p1,p2,p3);
System.out.println(p1+"h "+p2+"m "+p3+"s vaut "+Arrondir.getValeur(t2.getDec())+" h");
}
else {
System.out.println("Entrez l'heure en valeur décimale : ");
double p0 = sc.nextDouble();
SexaDeci t1 = new SexaDeci(p0);
System.out.println(" h vaut "+t1.getH()+" heure(s) "+t1.getM()+" minute(s) et "+t1.getS()+" seconde(s).");D
}
}
}
class SexaDeci{
public SexaDeci(int h, int m, int s) {
this.h = h;
this.m = m;
this.s = s;
}
public SexaDeci(double dec) {
this.dec = dec;
}
double getDec() {
return (h+m/60.0+s/3600.0);
}
int getH() {
int h = (int)dec;
return h;
}
double getM() {
int minutes = (int)(60*(dec-(int)dec));
return minutes;
}
double getS() {
double minutesDec = 60*(dec-(int)dec);
int minutes = (int)(60*(dec-(int)dec));
int secondes = (int)(60*(minutesDec - minutes ));
return secondes;
}
private int h, m, s;
private double dec;
}
L'erreur se produit quand je laisse la ligne double p0 = sc.nextDouble();"où p0 c'est l'heure en décimale. Quand je l'enlève et que je mets par exemple SexaDeci t1 = new SexaDeci(2.3); à la place de SexaDeci t1 = new SexaDeci(p0); ça marche. Donc ça merde au niveau du scanner j'ai l'impression.
J'ai ça comme erreur :
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 test.NombreSexagesimaux.main(NombreSexagesimaux.java:30)
Merci d'avance ! 
Message édité le 22 novembre 2017 à 20:04:29 par AuSensDuRigolo