Probleme avec mon algo (java)

Résolu/Fermé
patriot01 - 23 mars 2009 à 12:15
patriot01 Messages postés 60 Date d'inscription samedi 10 janvier 2009 Statut Membre Dernière intervention 21 avril 2014 - 23 mars 2009 à 16:49
bonjour tout le monde, je suis debutant en programmation j'ai cree un petit programme qui calcul le discriminant
mais j'ai probleme avec les saisies au clavier (System.in.read) voici mon programme sil vous plait corrigé la
"public class discriminant {

public static void main(String[] args){
double a,b,c,x1,x2,delta;
System.out.print("a= ");
System.in.read();
System.out.print("b= ");
System.in.read();
System.out.print("c= ");
System.in.read();
delta=(b*b)-(4*a*c);
System.out.println("Le discriminant est= "+delta);
}

} "
Merci davance
A voir également:

15 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
23 mars 2009 à 16:17
Salut,
C'est normal, il y a un petit '\n' qui se balade automatiquement dans le buffer.
Utilise plutôt la classe Scanner.
import java.util.Scanner;

public class discriminant {

    public static void main(String[] args){
        double a,b,c,x1,x2,delta;
        Scanner scan=new Scanner(System.in);
        System.out.print("a= ");
        a = scan.nextDouble();
        System.out.print("b= ");
        b = scan.nextDouble();
        System.out.print("c= ");
        c = scan.nextDouble();
        delta=(b*b)-(4*a*c);
        System.out.println("Le discriminant est= "+delta);
    }

}


Cdlt
1
NookZ Messages postés 2138 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 7 mars 2013 513
23 mars 2009 à 12:24
Le soucis est que vous ne récupérez pas les valeur entrée. Il faut procéder ainsi :

public class discriminant {

public static void main(String[] args){
double a,b,c,x1,x2,delta;
System.out.print("a= ");
int a = System.in.read();
System.out.print("b= ");
int b = System.in.read();
System.out.print("c= ");
int c = System.in.read();
delta=(b*b)-(4*a*c);
System.out.println("Le discriminant est= "+delta);
}

}
0
slt NookZ le compilateur signale des erreur ds le programme ,au niveu des valeur qui son devant int (a, b, c)
j'utilise eclipse
0
NookZ Messages postés 2138 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 7 mars 2013 513 > patriot01
23 mars 2009 à 12:34
Pouvez-vous me copier l'erreur exact s'il vous plaît?
0
patriot01 Messages postés 60 Date d'inscription samedi 10 janvier 2009 Statut Membre Dernière intervention 21 avril 2014 6
23 mars 2009 à 12:39
le compilateur affiche
"Duplicate local variable a
Duplicate local variable b
Duplicate local variable c

at discriminant.main(discriminant.java:6)
0
NookZ Messages postés 2138 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 7 mars 2013 513
23 mars 2009 à 13:39
J'avais pas vu la déclaration des variables :

public class discriminant {

public static void main(String[] args){
double a,b,c,x1,x2,delta;
System.out.print("a= ");
a = System.in.read();
System.out.print("b= ");
b = System.in.read();
System.out.print("c= ");
c = System.in.read();
delta=(b*b)-(4*a*c);
System.out.println("Le discriminant est= "+delta);
}

}
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
patriot01 Messages postés 60 Date d'inscription samedi 10 janvier 2009 Statut Membre Dernière intervention 21 avril 2014 6
23 mars 2009 à 13:48
now le compilateur affiche cet message:
Unhandled exception type IOException
Unhandled exception type IOException
Unhandled exception type IOException

at discriminant.main(discriminant.java:6)
0
NookZ Messages postés 2138 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 7 mars 2013 513
23 mars 2009 à 13:53
public class discriminant {

public static void main(String[] args){
double a,b,c,x1,x2,delta;

try {
System.out.print("a= ");
a = System.in.read();
System.out.print("b= ");
b = System.in.read();
System.out.print("c= ");
c = System.in.read();
delta=(b*b)-(4*a*c);
System.out.println("Le discriminant est= "+delta);
}
catch (IOException e){
System.out.println("Erreur de lecture de l'utilisateur");
}
}

}

ça veut juste dire que tu n'as pas gérer le cas où une erreur IO (donc InputOutput, c'est à dire d'entrée sortie) surviendrait. Ce que j'ai fait veut dire que dans le cas où une telle erreur (appelée aussi exception) serait levée, on écrit "Erreur de lecture de l'utilisateur"
0
patriot01 Messages postés 60 Date d'inscription samedi 10 janvier 2009 Statut Membre Dernière intervention 21 avril 2014 6
23 mars 2009 à 13:59
ya un autre probleme
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
IOException cannot be resolved to a type

at discriminant.main(discriminant.java:16)
0
NookZ Messages postés 2138 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 7 mars 2013 513
23 mars 2009 à 14:12
Ajoute cette ligne avant le début de ta classe :
import java.io.IOException;
0
patriot01 Messages postés 60 Date d'inscription samedi 10 janvier 2009 Statut Membre Dernière intervention 21 avril 2014 6
23 mars 2009 à 15:32
pardon pour le derangemen NookZ mai j'ai un blem avec l'algo encore g n'arrive pa a rentré les valeurs de (b) et de (c) le compilateur affiche
a= 2
b= c= Le discriminant est= -1831.0
0
NookZ Messages postés 2138 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 7 mars 2013 513
23 mars 2009 à 15:34
vous voulez dire que le programme ne vous laisse pas entrer de valeur pour b et c?
0
patriot01 Messages postés 60 Date d'inscription samedi 10 janvier 2009 Statut Membre Dernière intervention 21 avril 2014 6
23 mars 2009 à 15:41
oui c'est exactemen ça
0
NookZ Messages postés 2138 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 7 mars 2013 513
23 mars 2009 à 15:45
Je ne suis pas sûre de mon coup, mais je tenterai ça :

public static void main(String[] args){
double a,b,c,x1,x2,delta;
boolean fin = false;
while(!fin){
try {
System.out.print("a= ");
a = System.in.read();
System.out.print("b= ");
b = System.in.read();
System.out.print("c= ");
c = System.in.read();
delta=(b*b)-(4*a*c);
System.out.println("Le discriminant est= "+delta);
fin = true;
}
catch (IOException e){
System.out.println("Erreur de lecture de l'utilisateur");
}
}

}
0
patriot01 Messages postés 60 Date d'inscription samedi 10 janvier 2009 Statut Membre Dernière intervention 21 avril 2014 6
23 mars 2009 à 15:48
non cè plein d'erreur encore
0
NookZ Messages postés 2138 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 7 mars 2013 513
23 mars 2009 à 15:56
faut me dire quelles erreurs, sinon je risque pas de pouvoir aider ^^"
0
patriot01 Messages postés 60 Date d'inscription samedi 10 janvier 2009 Statut Membre Dernière intervention 21 avril 2014 6
23 mars 2009 à 16:01
le compilateur souligne
void , while,le croché devan string
le compilateur ne demare meme pas la compilation
0
NookZ Messages postés 2138 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 7 mars 2013 513
23 mars 2009 à 16:04
tu n'as pas oublié de remettre :
public class discriminant {
devant et
} après?
0
patriot01 Messages postés 60 Date d'inscription samedi 10 janvier 2009 Statut Membre Dernière intervention 21 avril 2014 6
23 mars 2009 à 16:08
t'avai raison mai je n'arrive toujours pas a renté la valeur de b et c
0
NookZ Messages postés 2138 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 7 mars 2013 513
23 mars 2009 à 16:16
Je crois que je vois le prob :

Public class discriminant {

public static void main(String[] args){
double a,b,c,x1,x2,delta;

System.out.print("a= ");
a = lire();
System.out.print("b= ");
b = lire();
System.out.print("c= ");
c = lire();
delta=(b*b)-(4*a*c);
System.out.println("Le discriminant est= "+delta);

}

public static int lire()
{
int retour = -1;
try {
retour = System.in.read();
while ((char)System.in.read() != '\n');
}
catch (IOException e){
System.out.println("Erreur de lecture de l'utilisateur");
}
return retour;
}

}
0
patriot01 Messages postés 60 Date d'inscription samedi 10 janvier 2009 Statut Membre Dernière intervention 21 avril 2014 6
23 mars 2009 à 16:31
ça marche merci bcp
la classe scanner g la connè pas
. avec cette classe ta pa eu besoin de (java.io.IOException) pourquoi,di g peu l'utilisé ds toute mes saisies clavier?

si ta des cours sur les classe svp pouvez vou me l'envoyez
0
NookZ Messages postés 2138 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 7 mars 2013 513
23 mars 2009 à 16:35
La classe scanner utilise la levée de l'exception IOException comme la fin de la chaîne entrée par l'utilisateur.
On a pas besoin de l'importer car elle n'est pas utiliser dans ta classe directement.

Voici un tutoriel de la classe Scanner :
http://www.javafr.com/tutoriaux/CLASSE-SCANNER_514.aspx
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
23 mars 2009 à 16:38
La classe scanner est apparue depuis la version 1.5, voilà pourquoi elle n'est pas super connue. Mais, elle est recommandée et simple d'utilisation.
Premier lien que j'ai trouvé par une simple recherche : http://www.javafr.com/tutoriaux/CLASSE-SCANNER_514.aspx
Il doit y en avoir des plus complets (je ne l'ai pas lu).

Sinon la référence : https://docs.oracle.com/javase/6/docs/api/java/util/Scanner.html

g peu l'utilisé ds toute mes saisies clavier?
Oui.
0
patriot01 Messages postés 60 Date d'inscription samedi 10 janvier 2009 Statut Membre Dernière intervention 21 avril 2014 6
23 mars 2009 à 16:49
merci a vous deux vous etes tro gentils
je vai voir les tutaux sur ces sites
di g peu avoir vos mails en cas de bug ds la programmation g vous envoi l'algo
0