Algorithme , Langage java
Fermé
Jiko-java
Messages postés
186
Date d'inscription
dimanche 25 septembre 2016
Statut
Membre
Dernière intervention
22 juillet 2017
-
Modifié par NHenry le 25/09/2016 à 16:24
Jiko-java Messages postés 186 Date d'inscription dimanche 25 septembre 2016 Statut Membre Dernière intervention 22 juillet 2017 - 26 sept. 2016 à 19:44
Jiko-java Messages postés 186 Date d'inscription dimanche 25 septembre 2016 Statut Membre Dernière intervention 22 juillet 2017 - 26 sept. 2016 à 19:44
A voir également:
- Algorithme , Langage java
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel football - Télécharger - Jeux vidéo
- Langage ascii - Guide
- Java apk - Télécharger - Langages
- Langage binaire - Guide
2 réponses
NHenry
Messages postés
15185
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
8 janvier 2025
351
25 sept. 2016 à 16:26
25 sept. 2016 à 16:26
Ta condition :
choixEleve!= 1 || choixEleve != 2 || choixEleve!= 3 || choixEleve != 4
Est un peu toujours vraie, non ?
Si choixEleve=2 elle est différente de 1, donc vrai.
utilise && plutôt
choixEleve!= 1 || choixEleve != 2 || choixEleve!= 3 || choixEleve != 4
Est un peu toujours vraie, non ?
Si choixEleve=2 elle est différente de 1, donc vrai.
utilise && plutôt
KX
Messages postés
16754
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
25 sept. 2016 à 17:58
25 sept. 2016 à 17:58
Bonjour,
Je t'invites à utiliser une méthode dédiée à la saisie d'un choix que tu peux compléter pour couvrir les différents cas à problèmes.
Exemple pour un entier :
Je t'invites à utiliser une méthode dédiée à la saisie d'un choix que tu peux compléter pour couvrir les différents cas à problèmes.
Exemple pour un entier :
public static int choixEntier(int min, int max) { while (true) { System.out.print("Entrez un nombre entre " + min + " et " + max + " : "); try { String line = scanner.nextLine(); int n = Integer.parseInt(line); if (n < min) { System.out.println("Erreur: " + n + " < " + min); } else if (n > max) { System.out.println("Erreur: " + n + " > " + max); } else { return n; } } catch (RuntimeException e) { System.out.println("Erreur: " + e); } } }
Jiko-java
Messages postés
186
Date d'inscription
dimanche 25 septembre 2016
Statut
Membre
Dernière intervention
22 juillet 2017
25 sept. 2016 à 18:08
25 sept. 2016 à 18:08
Merci pour ta réponse , étant débutant dans la programmation j'ai du mal a visualisé chacune de tes instruction comme int n = Integer.parseInt(line); Qu'est ce qu'elle fait et dans le while que dois-je mettre entre parenthèse et aussi cette méthode permet de couvrir le cas ou c'est un entier qui est entré si j'ai bien compris mais ce que je voudrais savoirs c'est y'a t'il une méthode qui permet de couvrir tout les cas possible à savoir si c'est un String , un char , un double qui est entré ...
KX
Messages postés
16754
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
25 sept. 2016 à 18:15
25 sept. 2016 à 18:15
Dans ton code précédent tu faisais
Et oui ça couvre les autres cas possibles, nextInt renvoyait un InputMismatchException si la saisie n'était pas un entier, le parseInt renvoie lui un NumberFormatException, mais l'un ou l'autre sont tout les deux interceptés par le
Quant à ton while tu n'en as plus besoin, c'est la méthode de choix qui le fait.
Du coup ton code devient juste :
scanner.nextInt();ce qui lisais directement un entier, mais avec des effets de bords assez pénibles, perso je préfère lire directement la ligne entière, et la convertir en entier, c'est ce que fait
Integer.parseInt(line).
Et oui ça couvre les autres cas possibles, nextInt renvoyait un InputMismatchException si la saisie n'était pas un entier, le parseInt renvoie lui un NumberFormatException, mais l'un ou l'autre sont tout les deux interceptés par le
catch(RuntimeException e)il t'afficheras donc une erreur mais ne plantera pas.
Quant à ton while tu n'en as plus besoin, c'est la méthode de choix qui le fait.
Du coup ton code devient juste :
public static void main(String[] args) { System.out.println("Bienvenue Au programme de divers Operation : "); System.out.println(" Entrer 1 pour faire une Addition "); System.out.println(" Entrer 2 pour faire une Soustraction "); System.out.println(" Entrer 3 pour faire une Multiplication "); System.out.println(" Entrer 4 pour faire une divison "); int choixEleve = choixEntier(1, 4); switch (choixEleve) { case 1: faireUneAddition(); break; case 2: faireUneSoustraction(); break; case 3: faireUneMultiplication(); break; case 4: faireUneDivision(); break; } }
Jiko-java
Messages postés
186
Date d'inscription
dimanche 25 septembre 2016
Statut
Membre
Dernière intervention
22 juillet 2017
Modifié par KX le 25/09/2016 à 19:49
Modifié par KX le 25/09/2016 à 19:49
Donc , La variable int choixEleve = choixEntier(1,4); Nous renvois directement à la méthode
Donc on lègue le travail a cette méthode et c'est elle qui se chargeras de récupéré les erreurs si il y'en a Quant a ce que l'utilisateur écrit ? Quant a le Integer.parseInt(line). j'ai toujours pas compris sont utilisé fin elle sert a comparé ce que l'utilisateur a entré avec le type de la variable ? et pour pouvoir l'utilisé je suppose qu'il faut faire appel a son objet que l'environnement de développement connait ? genre pour le scanner pour pouvoir l'utilisé on doit introduire public static java.util.Scanner scanner = new java.util.Scanner(System.in);
public static int choixEntier(int min, int max) { while (true) { System.out.print("Entrez un nombre entre " + min + " et " + max + " : "); try { String line = scanner.nextLine(); int n = Integer.parseInt(line); if (n < min) { System.out.println("Erreur: " + n + " < " + min); } else if (n > max) { System.out.println("Erreur: " + n + " > " + max); } else { return n; } } catch (RuntimeException e) { System.out.println("Erreur: " + e); } } }
Donc on lègue le travail a cette méthode et c'est elle qui se chargeras de récupéré les erreurs si il y'en a Quant a ce que l'utilisateur écrit ? Quant a le Integer.parseInt(line). j'ai toujours pas compris sont utilisé fin elle sert a comparé ce que l'utilisateur a entré avec le type de la variable ? et pour pouvoir l'utilisé je suppose qu'il faut faire appel a son objet que l'environnement de développement connait ? genre pour le scanner pour pouvoir l'utilisé on doit introduire public static java.util.Scanner scanner = new java.util.Scanner(System.in);
Jiko-java
Messages postés
186
Date d'inscription
dimanche 25 septembre 2016
Statut
Membre
Dernière intervention
22 juillet 2017
25 sept. 2016 à 19:51
25 sept. 2016 à 19:51
j'ai également apporté quelque modification a mon code mais il a buug il a m'affiche CalculMathematique1.java:46: error: missing return statement , pourtant j'ai pris le soins de refermé toute mes balise ({) Voici mon code :
public class CalculMathematique1{
public static java.util.Scanner scanner = new java.util.Scanner(System.in);
public static void main(String[] args){
System.out.println("Bienvenue Au programme de divers Operation : ");
System.out.println(" Entrer 1 pour faire une Addition ");
System.out.println(" Entrer 2 pour faire une Soustraction ");
System.out.println(" Entrer 3 pour faire une Multiplication ");
System.out.println(" Entrer 4 pour faire une divison ");
int choixEleve = choixEntier(1, 4);
do{
if(choixEleve != 1 && choixEleve != 2 && choixEleve != 3 && choixEleve != 4){
System.out.println( " Veuillez entré l'un des choix proposé : ");
choixEleve = scanner.nextInt();
}
switch(choixEleve){
case 1 : faireUneAddition();
break;
case 2 : faireUneSoustraction();
break;
case 3 : faireUneMultiplication();
break;
case 4 : faireUneDivision();
break;
}
}while(choixEleve!= 1 && choixEleve != 2 && choixEleve!= 3 && choixEleve != 4);
}
public static int choixEntier(int min, int max){
System.out.print("Entrez un nombre entre " + min + " et " + max + " : ");
try {
String line = scanner.nextLine();
int n = Integer.parseInt(line);
if (n < min) {
System.out.println("Erreur: " + n + " < " + min);
} else if (n > max) {
System.out.println("Erreur: " + n + " > " + max);
} else {
return n;
}
} catch (RuntimeException e) {
System.out.println("Erreur: " + e);
}
}
public static int unEntierAuHasardEntre (int valeurMinimale, int valeurMaximale){
double nombreReel;
int resultat;
nombreReel = Math.random();
resultat = (int) (nombreReel * (valeurMaximale - valeurMinimale + 1)) + valeurMinimale;
return resultat;
}
}
public class CalculMathematique1{
public static java.util.Scanner scanner = new java.util.Scanner(System.in);
public static void main(String[] args){
System.out.println("Bienvenue Au programme de divers Operation : ");
System.out.println(" Entrer 1 pour faire une Addition ");
System.out.println(" Entrer 2 pour faire une Soustraction ");
System.out.println(" Entrer 3 pour faire une Multiplication ");
System.out.println(" Entrer 4 pour faire une divison ");
int choixEleve = choixEntier(1, 4);
do{
if(choixEleve != 1 && choixEleve != 2 && choixEleve != 3 && choixEleve != 4){
System.out.println( " Veuillez entré l'un des choix proposé : ");
choixEleve = scanner.nextInt();
}
switch(choixEleve){
case 1 : faireUneAddition();
break;
case 2 : faireUneSoustraction();
break;
case 3 : faireUneMultiplication();
break;
case 4 : faireUneDivision();
break;
}
}while(choixEleve!= 1 && choixEleve != 2 && choixEleve!= 3 && choixEleve != 4);
}
public static int choixEntier(int min, int max){
System.out.print("Entrez un nombre entre " + min + " et " + max + " : ");
try {
String line = scanner.nextLine();
int n = Integer.parseInt(line);
if (n < min) {
System.out.println("Erreur: " + n + " < " + min);
} else if (n > max) {
System.out.println("Erreur: " + n + " > " + max);
} else {
return n;
}
} catch (RuntimeException e) {
System.out.println("Erreur: " + e);
}
}
public static int unEntierAuHasardEntre (int valeurMinimale, int valeurMaximale){
double nombreReel;
int resultat;
nombreReel = Math.random();
resultat = (int) (nombreReel * (valeurMaximale - valeurMinimale + 1)) + valeurMinimale;
return resultat;
}
}
KX
Messages postés
16754
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
25 sept. 2016 à 20:01
25 sept. 2016 à 20:01
"c'est elle qui se chargeras de récupéré les erreurs si il y'en a"
Oui c'est le code suivant qui gère ça.
En cas d'exception, on affiche le message "Erreur" avec le détail.
Donc avec
Pour pouvoir l'utiliser tu n'as rien à rajouter, Java connait déjà cette méthode, de même qu'elle connaît déjà System.out.println par exemple.
Après si ça t'embêtes vraiment, tu peux remettre ton
Oui c'est le code suivant qui gère ça.
try { // ... } catch (RuntimeException e} System.out.println("Erreur: " + e); }
En cas d'exception, on affiche le message "Erreur" avec le détail.
Integer.parseInt(line)fait la conversion d'un String en int (voir sa javadoc)
Donc avec
scanner.readLine()je lis un String, par exemple
"3"et le
parseIntle transforme en entier
3, c'est à ce moment là que ça peut planter si tu mets autre chose qu'un entier dans la ligne car la conversion va échouer.
Pour pouvoir l'utiliser tu n'as rien à rajouter, Java connait déjà cette méthode, de même qu'elle connaît déjà System.out.println par exemple.
Après si ça t'embêtes vraiment, tu peux remettre ton
scanner.readInt()à la place, mais pour éviter des effets de bords je t'invites à mettre un
scanner.readLine()à la suite, comme ceci :
try { int n = scanner.nextInt(); scanner.nextLine(); // suppression des autres caractères de la ligne if (n < min) { // ...
25 sept. 2016 à 16:37
25 sept. 2016 à 17:27
|| OU logique entre les valeurs
A ET B sera vrai si A et B sont vrai
A OU B sera vrai si A ou(inclusif) B sont vrai
Dans ton test, tu fais :
Si A différent de 1 OU A différent de 2 OU ...
Si A=1, A != 2
d'où le ET, car si une seule valeur est fausse (dans l'exemple, A==1, donc A!=1 est faux) l'ensemble est faux et donc sort de la boucle.
25 sept. 2016 à 17:42