Probleme avec mon algo (java)

Résolu
patriot01 -  
patriot01 Messages postés 70 Statut Membre -
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 11653 Statut Contributeur 1 847
 
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 2376 Statut Membre 514
 
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
patriot01
 
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 2376 Statut Membre 514 > patriot01
 
Pouvez-vous me copier l'erreur exact s'il vous plaît?
0
patriot01 Messages postés 70 Statut Membre 6
 
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 2376 Statut Membre 514
 
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 70 Statut Membre 6
 
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 2376 Statut Membre 514
 
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 70 Statut Membre 6
 
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 2376 Statut Membre 514
 
Ajoute cette ligne avant le début de ta classe :
import java.io.IOException;
0
patriot01 Messages postés 70 Statut Membre 6
 
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 2376 Statut Membre 514
 
vous voulez dire que le programme ne vous laisse pas entrer de valeur pour b et c?
0
patriot01 Messages postés 70 Statut Membre 6
 
oui c'est exactemen ça
0
NookZ Messages postés 2376 Statut Membre 514
 
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 70 Statut Membre 6
 
non cè plein d'erreur encore
0
NookZ Messages postés 2376 Statut Membre 514
 
faut me dire quelles erreurs, sinon je risque pas de pouvoir aider ^^"
0
patriot01 Messages postés 70 Statut Membre 6
 
le compilateur souligne
void , while,le croché devan string
le compilateur ne demare meme pas la compilation
0
NookZ Messages postés 2376 Statut Membre 514
 
tu n'as pas oublié de remettre :
public class discriminant {
devant et
} après?
0
patriot01 Messages postés 70 Statut Membre 6
 
t'avai raison mai je n'arrive toujours pas a renté la valeur de b et c
0
NookZ Messages postés 2376 Statut Membre 514
 
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 70 Statut Membre 6
 
ç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 2376 Statut Membre 514
 
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 11653 Statut Contributeur 1 847
 
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 70 Statut Membre 6
 
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