Equations second degré

Résolu
usef01 Messages postés 3 Date d'inscription mardi 3 juin 2008 Statut Membre Dernière intervention 14 juin 2008 - 4 juin 2008 à 16:13
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.

3 réponses

cs_Kysic Messages postés 332 Date d'inscription mardi 12 juillet 2005 Statut Membre Dernière intervention 17 juillet 2010
4 juin 2008 à 19:59
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.
3
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
5 juin 2008 à 01:40
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;
}
3
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
merci ça marche effectivement
0
Rejoignez-nous