Probleme JAVA /Fonction Scanner [Résolu]

Signaler
Messages postés
53
Date d'inscription
dimanche 17 janvier 2010
Statut
Membre
Dernière intervention
26 avril 2011
-
 Utilisateur anonyme -
Bonjour a tous..!!!

Je viens a vous car j ai un soucy avec mon premier programme..
Je suis a l' AFPA depuis 2 semaines,
Comme tout les monde je pence..^^ j' ai réaliser une calculatrice simpliste...très...lol.!

Or, mon programme plante quand ds la calculatrice je rentre un Caractère a la place d un nombre...

Je voudrai savoir comment faire afficher un message d' erreur si l' utilisateur entre un caractère..

Voila mon code de programme :


// Calculette JAVA by PL_4...##
//Le 30 mars 2010............##
// Deveuloppeur Logiciel.....##

import java.util.Scanner;

public class calculette

{
public static void main(String[] args)
{
Scanner lectClav = new Scanner(System.in);
int choixCalcul = 0;
int stop = '2';

System.out.println("***Basic Calculator***");

do
{
// Choix du calcul........##
System.out.println();
System.out.print("Please choose the calculation made in the following list: ");
System.out.println();
System.out.println("1 = Addition.");
System.out.println("2 = Subtraction.");
System.out.println("3 = Multiplication.");
System.out.println("4 = Division.");


choixCalcul =lectClav.nextInt();

if (choixCalcul > 0 && choixCalcul < 4)
{

switch (choixCalcul)
{
case 1 ://.........................Addition..##
double chiffre1 = 0;
double chiffre2 = 0;
double chiffreResult = 0;

System.out.println("Please enter your number: ");

chiffre1 =lectClav.nextInt();

System.out.println("Please enter the number to add: ");

chiffre2 =lectClav.nextInt();

chiffreResult = chiffre1 + chiffre2;

System.out.println("the result of " + chiffre1 + " + " + chiffre2 + " is equal to " + chiffreResult +".");

break;

case 2 ://.........................Soustraction..##
double chiffre3 = 0;
double chiffre4 = 0;
double chiffreResult2 = 0;

System.out.println("Please enter your number: ");

chiffre3 =lectClav.nextInt();

System.out.println("Please enter the figure subtract: ");

chiffre4 =lectClav.nextInt();

chiffreResult2 = chiffre3 - chiffre4;

System.out.println("the result of " + chiffre3 + " - " + chiffre4 + " is equal to " + chiffreResult2 +".");

break;

case 3 ://.........................Multiplication..##

double chiffre5 = 0;
double chiffre6 = 0;
double chiffreResult3 = 0;

System.out.print("Please enter your number: ");

chiffre5 =lectClav.nextInt();

System.out.println("Please enter the digit multiplier: ");

chiffre6 =lectClav.nextInt();

chiffreResult3 = chiffre5 * chiffre6;

System.out.println("the result of" + chiffre5 + " * " + chiffre6 + " is equal to " + chiffreResult3 +".");

break;

case 4 ://.........................Division..##

double chiffre7 = 0;
double chiffre8 = 0;
double chiffreResult4 = 0;

System.out.println("Please enter your number: ");

chiffre7 =lectClav.nextInt();

System.out.println("Please enter the digit divisor: ");

chiffre8 =lectClav.nextInt();

chiffreResult4 = chiffre7 / chiffre8;

System.out.println("the result of " + chiffre7 + " / " + chiffre8 + " is equal to " + chiffreResult4 +".");

break;
}

}
else;
{
System.out.print("No..!! You are Stupid.....??\n");
System.out.print("****************************\n");
}

// Demande retour Zero pr cacul..##

System.out.println();
System.out.println("Would you repeat a calculation ?");
System.out.println("1 => yes.");
System.out.println("2 => no.");
Scanner lectClav10 = new Scanner(System.in);
stop =lectClav10.nextInt();
}
while ( stop != 2);
System.out.print("Thanx for use this program.....By PL_4");
}

}



En vous remerciant par avance

Cordialement PL_4

8 réponses


Bonjour

Tu fais ça pour l'instant :
unEntier = lectClav.nextInt();


Tu devrais faire ça :
if(lectClav.hasNextInt())
    unEntier = lectClav.nextInt();
else
    System.out.println("t'es un boulet toi, on te dit d'entrer un entier!");












TUER : http://tuer.sourceforge.net/tuer.jnlp

yeah! vive java

C'est tout à fait ça. Quand tu sais que Scanner a encore quelque chose d'invalide comme prochain token, appelle simplement next comme ici :

if(lectClav.hasNextInt())
    unEntier = lectClav.nextInt();
else
    {lectClav.next();
     System.out.println("t'es un boulet toi, on te dit d'entrer un entier!");
    }


Bon courage








TUER : http://tuer.sourceforge.net/tuer.jnlp

yeah! vive java

Bonsoir

Utilise la méthode hasNextInt() pour savoir avant d'appeler nextInt() si le prochain token est un entier. Si tel n'est pas le cas, tu peux alors afficher ton message d'erreur. Je t'invite à jeter un coup d'oeil dans la documentation Java de la classe Scanner.













TUER : http://tuer.sourceforge.net/tuer.jnlp

yeah! vive java
Messages postés
53
Date d'inscription
dimanche 17 janvier 2010
Statut
Membre
Dernière intervention
26 avril 2011

Bonjour; merci beaucoup davoir pris le temps de répondre a mon problème!

Or je narrive pas bien a conprendre la maniere dont je doit m en servir ds mon programme, sa fait que 2 semaines que j ai attacker la prog et je n est pas l instinct du programmeur encore.....lol !

Pourrait tu meclairer sur la démarche a faire pour mon "programme" STP..?

En vous remerciant par avance..

> Cordialement PL_4 <==
Messages postés
53
Date d'inscription
dimanche 17 janvier 2010
Statut
Membre
Dernière intervention
26 avril 2011

RE, ok j ai bien compris mtn, c tt simple en faite..!!

Je te remerci vraiment beaucoup de la qualitée et la rapiditée de tes reponse tu ma été d une grande aide, merci encore !!!!!!





Cordialement PL_4
Messages postés
53
Date d'inscription
dimanche 17 janvier 2010
Statut
Membre
Dernière intervention
26 avril 2011

Re, je suis peut etre un boulet...mais j ai remplacer comme tu me la dit et certe le programme ne plante plus, mais il me cogne une boucle infini qu il sors je ne sais d'ou.... comme si le scanner garder en memoire la caractere...dc il tourne en boucle sans jamais s arreter....

RRRrrrrRRR c pas evidents tout sa...
Messages postés
53
Date d'inscription
dimanche 17 janvier 2010
Statut
Membre
Dernière intervention
26 avril 2011

Re merci encore..!!!!!

La c good pr de bon cette fois!!!

Merci a toi de l info...

Sa ma vraiment servi!!


Cordialement PL_4

De rien. Je te donne un conseil comme tu débutes. Pense à bien regarder la documentation avant de poser une question ici. Nous avons la chance d'avoir une excellente documentation de l'API Java ce qui n'est pas aussi vrai pour d'autres langages donc il faut en profiter un maximum :
http://java.sun.com/javase/6/docs/api/













TUER : http://tuer.sourceforge.net/tuer.jnlp

yeah! vive java