Equations second degré [Résolu]

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

Votre réponse

3 réponses

Meilleure réponse
cs_Kysic 332 Messages postés mardi 12 juillet 2005Date d'inscription 17 juillet 2010 Dernière intervention - 4 juin 2008 à 19:59
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.

Merci cs_Kysic 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 73 internautes ce mois-ci

Commenter la réponse de cs_Kysic
Meilleure réponse
Ombitious_Developper 2333 Messages postés samedi 28 février 2004Date d'inscription 26 juillet 2013 Dernière intervention - 5 juin 2008 à 01:40
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;
}

Merci Ombitious_Developper 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 73 internautes ce mois-ci

Commenter la réponse de Ombitious_Developper
usef01 3 Messages postés mardi 3 juin 2008Date d'inscription 14 juin 2008 Dernière intervention - 6 juin 2008 à 02:29
0
Merci
merci ça marche effectivement
Commenter la réponse de usef01

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.