Algorithme " condition"
Résolu
Jiko-java
Messages postés
189
Statut
Membre
-
Jiko-java Messages postés 189 Statut Membre -
Jiko-java Messages postés 189 Statut Membre -
Bonjour , " Une autoroute à péage est divisée en sections ayant une entrée et une sortie de section. Le prix à payer correspond aux nombre de sections parcourues.
La première section coûte 1 euro et les suivantes coûtent 50 centimes" .
Voici mon code Si quelqu'un peut m'aider à l'amélioré j'en serai ravis ! :
cependant une question (pourtant simple) me taraude supposons que l'entrée == sortie ---> distance = 0 , dans ce cas le prix a payé est-il de
1 euro , ou rien ? Merci d'avance :) .
La première section coûte 1 euro et les suivantes coûtent 50 centimes" .
Voici mon code Si quelqu'un peut m'aider à l'amélioré j'en serai ravis ! :
public class peage{
public static java.util.Scanner scanner = new java.util.Scanner(System.in);
public static void main(String[]args){
System.out.println("Veuillez entré le point d'entree de la section");
int entree = scanner.nextInt();
System.out.println("Veuillez entré a présent le point de sortie");
int sortie = scanner.nextInt();
int distance = entree - sortie;
System.out.println("Vous avez parcourue : " + distance + " section ");
if(distance == 0){
double total = 1;
System.out.println("Le prix a payé est de : " + total);
}
else{
double total = 1 + ((distance - 1 )*0.50);
System.out.println("Voici le total a payé : " + total);
}
cependant une question (pourtant simple) me taraude supposons que l'entrée == sortie ---> distance = 0 , dans ce cas le prix a payé est-il de
1 euro , ou rien ? Merci d'avance :) .
1 réponse
-
Bonjour,
Tu devrais séparer la partie calcul dans une méthode séparée, afin de ne pas la mélanger avec la partie Scanner/System.out.
"supposons que l'entrée == sortie ---> distance = 0"
C'est impossible, sur une autoroute la sortie est toujours avant l'entrée. Donc si tu entres tu ne peux ressortir qu'à la section d'après.-
D'accord merci C'est gentil, en relisant une partie d'un code je me suis rendu compte que j'ai encore du mal a interprété (simulé) un programme.
public class condition1{ public static void main(String[] args) { int x = 4; int y = 1; System.out.print("1"); if(a<6) if(b>2) System.out.print("2"); else System.out.print("3"); System.out.print("4"); } }public class condition2{ public static void main(String[] args) { int x = 4; int y = 1; System.out.print("1"); if(a<6){ if(b>2) System.out.print("2"); } else System.out.print("3"); System.out.print("4"); } }
j'ai du mal a comprendre la différence entre les 2 si ce n'est que les accolades et l’indentation , selon moi les 2 affiches 134 mais en le passant au debugger je me suis rendu compte qu'un d'entre eux affiche 14 et j'ai du mal a comprendre pourquoi :/ -
"si ce n'est que les accolades et l’indentation"
Justement ça change tout, parce que dans le premier code leelse
est le contraire duif(b>2)
alors que dans le deuxième c'est le contraire deif(a<6)
...if (a<6) { if(b>2) { System.out.print("2"); } else { System.out.print("3"); } }if(a<6) { if(b>2) { System.out.print("2"); } } else { System.out.print("3"); } -
-
En effet, elles sont facultatives (s'il n'y a qu'une seule instruction), mais vu que tu avais du mal à comprendre le découpage, je les ai réécris avec les accolades.
Elles sont de toute façon "recommandées" même lorsqu'elles sont facultatives, notamment par les différents outils d'analyse de codes :
PMD : IfStmtsMustUseBraces, IfElseStmtsMustUseBraces
Sonar : S00121 -
-