Equations second degré [Résolu]

Messages postés
3
Date d'inscription
mardi 3 juin 2008
Statut
Membre
Dernière intervention
14 juin 2008
- - Dernière réponse : usef01
Messages postés
3
Date d'inscription
mardi 3 juin 2008
Statut
Membre
Dernière intervention
14 juin 2008
- 6 juin 2008 à 02:29
bonjour, j'ai un petit probleme concernant un programme qui resoud les equations de second degré. Quand l'exception InputMismatchException est lancée, il la traite impec avec le catch associé cad il affiche à l'ecran "Vous devez introduire un nombre", puis il execute la premiere instruction apres le catch ("Voulez-vous continuer ? [o/n/?]") apres ça il se bloque : je peux rien saisir au clavier .
voici le code complet :

import java.util.InputMismatchException;
import java.util.Scanner;

public class SecondDeg {

public static void main(String[] args) {

boolean continuation=true;
Scanner scan = new Scanner(System.in);
double a,b,c,delta,d,x,y,im,re;
char verif;

do {
System.out.println("ax²+bx+c=0");
System.out.println("Veuillez entrer les coefficients ");

try{
System.out.print("a = ");

a= scan.nextDouble();
while(a==0) {
System.out.println("a est different de 0");
System.out.print("a = ");
a= scan.nextDouble();
}
System.out.print("b = ");
b= scan.nextDouble();
System.out.print("c = ");
c= scan.nextDouble();

System.out.println("\nl'equation a resoudre est : "+a+"x²+"+b+"x+"+c+"=0\n");

delta = Math.pow(b, 2.0)-4*a*c;
if (delta>0)
{
x = (-b-Math.sqrt(delta))/2;
y = (-b+Math.sqrt(delta))/2;

System.out.println("2 solutions réelles:\n x = "+x+" , y = "+y+"");
}
else if (delta ==0)
{

x = (-b)/2;
System.out.println("1 solution réelle:\n x = "+x+"");
}
else
{
d=Math.sqrt(-delta);
re=(-b)/2;
im=d/2;
System.out.println("2 solutions complexes:\n" +
" x "+re+"-"+im+"i , y "+re+"+"+im+"i");
}

}
catch (InputMismatchException e)
{
System.out.println("Vous devez introduire un nombre");

}

System.out.println("\nVoulez-vous continuer ? [o/n/?]");
verif=scan.next().charAt(0);
if (verif != 'o' && verif != 'O')
continuation = false;


}while(continuation);


System.exit(-1);

}

}

Merci d'avance pour vos reponses.
Afficher la suite 

3 réponses

Meilleure réponse
Messages postés
332
Date d'inscription
mardi 12 juillet 2005
Statut
Membre
Dernière intervention
17 juillet 2010
3
Merci
Salut,
essaie d'ajouter "scan = new Scanner(System.in);" après "System.out.println("Vous devez introduire un nombre");" je pense que ça devrait résoudre le pb.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 217 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Kysic
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
26 juillet 2013
32
3
Merci
Salut:

J'ai compilé ton programme chez moi, il marche sans aucun problème sauf si il ne donne pas les résultats attendus.

import static java.lang.Math.*;

if (delta > 0) {
    // deux racine réelles R
    x = (-b + sqrt(delta))/2*a;
    y = (-b - sqrt(delta))/2*a;
} else if (delta == 0) {
    // Une racine double
    x = -b/(2*a);
} else {
    // Solution dans l'ensembe C
    delta = -delta;
     re = (-b + sqrt(delta))/2*a;

     im = (-b - sqrt(delta))/2*a;
}

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 217 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Ombitious_Developper
Messages postés
3
Date d'inscription
mardi 3 juin 2008
Statut
Membre
Dernière intervention
14 juin 2008
0
Merci
merci ça marche effectivement
Commenter la réponse de usef01