Probleme JAVA /Fonction Scanner [Résolu]

Messages postés
53
Date d'inscription
dimanche 17 janvier 2010
Dernière intervention
26 avril 2011
- - Dernière réponse :  Utilisateur anonyme - 6 avril 2010 à 16:57
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
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
3
Merci
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

Merci Utilisateur anonyme 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de Utilisateur anonyme
3
Merci
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

Merci Utilisateur anonyme 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de Utilisateur anonyme
0
Merci
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
Commenter la réponse de Utilisateur anonyme
Messages postés
53
Date d'inscription
dimanche 17 janvier 2010
Dernière intervention
26 avril 2011
0
Merci
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 <==
Commenter la réponse de pl4hs
Messages postés
53
Date d'inscription
dimanche 17 janvier 2010
Dernière intervention
26 avril 2011
0
Merci
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
Commenter la réponse de pl4hs
Messages postés
53
Date d'inscription
dimanche 17 janvier 2010
Dernière intervention
26 avril 2011
0
Merci
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...
Commenter la réponse de pl4hs
Messages postés
53
Date d'inscription
dimanche 17 janvier 2010
Dernière intervention
26 avril 2011
0
Merci
Re merci encore..!!!!!

La c good pr de bon cette fois!!!

Merci a toi de l info...

Sa ma vraiment servi!!


Cordialement PL_4
Commenter la réponse de pl4hs
0
Merci
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
Commenter la réponse de Utilisateur anonyme

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.