QUIZ N°5 - Structures conditionnelles
QUIZ N°5 - Structures conditionnelles en Java
Prêt à commencer ?
Lisez chaque question attentivement et sélectionnez la ou les bonnes réponses.
Lequel des éléments suivants n'est pas un résultat possible de l'exécution du programme suivant ?
public class ConditionallyLogical {
public static void main(String... data) {
if (data.length >= 1 && (data[0].equals("meknes") || data[0].equals("rabat")) && data.length < 2) {
System.out.print(data[0]);
}
}
}
Powered by Froala Editor
(Option 3). La clé pour comprendre cette question est de se rappeler que l'opérateur de conjonction conditionnelle && n'exécute le côté droit de l'expression que si le côté gauche est vrai. Si data est un tableau vide, l'expression se termine tôt et rien n'est généré.
La deuxième partie de l’expression retournera la valeur true si le premier élément de data est meknes ou rabat. Comme nous savons d'après la première partie de la déclaration que les données ont une longueur d'au moins une, aucune exception ne sera levée. La dernière partie de l'expression avec data.length <2 ne modifie pas la sortie lorsque data est un tableau de taille un. Par conséquent, meknes et rabat sont les deux sorties possibles. Pour ces raisons, l'option 3 est le seul résultat inattendu au moment de l'exécution.
Powered by Froala Editor
Remplir les espaces vides :
Les opérateurs–, ________ , _________ , ______ , et % sont répertoriés dans la même ou dans un ordre croissant du niveau de priorité de l'opérateur.
Powered by Froala Editor
(Option 1). Dans l'option 2, l'opérateur de soustraction vient incorrectement après l'opérateur de décrémentation. Dans l'option 3, l'opérateur de division / vient incorrectement après l'opérateur d'incrémentation ++. Dans l'option 4, l'opérateur de module % vient incorrectement après l'opérateur d'incrémentation ++. La réponse correcte est l'option 1, où les opérateurs soustraction - et addition + sont suivis par les opérateurs division / et multiplication *.
Powered by Froala Editor
Remplir les espaces vides:
Une instruction switch peut avoir ______ instructions case et ______ instructions default.
Powered by Froala Editor
(Option 2). En excluant toute limitation de machine virtuelle Java, une instruction switch peut comporter un nombre illimité d'instructions case (y compris aucune) mais au plus une instruction default, l'option 2 identifiant correctement cette relation.
Powered by Froala Editor
Remplir les espaces vides:
L'opérateur _______ est vrai si l'un des opérandes est vrai, alors que l'opérateur ______ renverse une valeur booléenne.
Powered by Froala Editor
(Option 4). L'opérateur de disjonction conditionnelle || (OR) est vrai si l'un des opérandes est vrai, alors que l'opérateur du complément logique (!) inverse ou retourne une valeur booléenne, faisant de l'option 4 la bonne réponse. Les autres options utilisent des opérateurs qui ne correspondent pas à cette description. En particulier, les options 1 et 3 incluent des opérateurs qui ne peuvent être appliqués qu'aux valeurs numériques et non aux valeurs booléennes.
Powered by Froala Editor
Quelle est la sortie de l'extrait de code suivant?
int x = 10, y = 5;
boolean w = true, z = false;
x = w ? y++ : y--;
w = !z;
System.out.print((x+y)+" "+(w ? 5 : 10));
Powered by Froala Editor
(Option 3). Le code est compilé, donc l'option 1 est incorrecte. Comme w commence vrai, la troisième ligne prend le premier côté droit de l'expression ternaire, en renvoyant et en affectant 5 à x (opérateur de post-incrémentation) tout en incrémentant y à 6. Sur la quatrième ligne, la valeur de w est définie sur !z. Puisque z est faux, la valeur de w reste vraie. La dernière ligne affiche la valeur de (5 + 6) et (true? 5: 10), qui correspond à 11 5, faisant de l’Option 3 la bonne réponse.
Powered by Froala Editor
Quelle affirmation sur les opérateurs logiques & et && est vraie?
Powered by Froala Editor
(Option 2). Les opérateurs & et && ne sont pas interchangeables car l'opérateur conjonctif & évalue toujours les deux côtés de l'expression, tandis que l'opérateur && conjonctif conditionnel n'évalue le côté droit de l'expression que si le côté gauche est déterminé comme étant vrai. C'est pourquoi les opérateurs conditionnels sont souvent appelés opérateurs de court-circuit, ignorant l'expression de droite lors de l'exécution. Pour ces raisons, l'option 2 est la bonne réponse.
Powered by Froala Editor
Remplir les espaces vides:
Étant donné deux objets String non nuls avec les noms de référence obj1 et obj2, si obj1 ______ obj2 est évaluée à true, les obj1 _______ obj2 doivent également être évaluées à true.
Powered by Froala Editor
(Option 1). Pour cette question, rappelez-vous que si deux objets String sont évalués à true avec ==, ils sont alors le même objet. S'il s'agit du même objet String, equals () renverra trivialement la valeur true. L'option 1 reflète correctement ce principe. L'option 2 est incorrecte, car deux objets String non identiques peuvent toujours être équivalents en termes equals(). Par exemple, obj1 == new String ("obj1") est évalué à false, mais equals () sera évalué à true sur ces objets String. De même, les options 3 et 4 sont également incorrectes car deux objets String équivalents en termes equals() peuvent être différents.
Powered by Froala Editor
Quel est le résultat du programme suivant ?
public class Baby {
public static String play(int toy, int age) {
final String game;
if (toy < 2)
game = age > 1 ? 1 : 10; // p1
else
game = age > 3 ? "Ball" : "Swim"; // p2
return game;
}
public static void main(String[] variables) {
System.out.print(play(5, 2));
}
}
Powered by Froala Editor
(Option 3). Pour résoudre ce problème, il est essentiel de rappeler que le type de la valeur renvoyée par une opération ternaire est déterminé par les expressions figurant à droite. Sur la ligne p1, les expressions sont de type int, mais l’affectation correspond à la variable game, de type String. L'affectation n'étant pas valide, le code ne se compile pas et l'option 3 est correcte.
Powered by Froala Editor
Quelle affirmation sur l'opérateur ^ est correcte?
Powered by Froala Editor
(Option 4). L'opérateur ou exclusif (XOR) ^ nécessite d'évaluer les deux opérandes pour déterminer le résultat. Pour cette raison, les options 1 et 2 sont incorrectes. Pour l'option 2, vous ne pouvez pas avoir d'opération de court-circuit si les deux opérandes sont toujours lus, par conséquent ^^ n'existe pas. L'option 3 est une instruction incorrecte, car l'opérateur ^ ne renvoie vrai que si un seul opérande est vrai. Enfin, l'option 4 est correcte car le ^ n'est appliqué qu'aux valeurs booléennes en Java.
Powered by Froala Editor
Combien de 1 sont affichés lorsque le programme suivant est compilé et exécuté?
package city;
public class Road {
public static void main(String... in) {
int intersections = 100;
int streets = 200;
if (intersections < 150) {
System.out.print("1");
} else if (streets && intersections > 1000) {
System.out.print("2");
}
if (streets < 500)
System.out.print("1");
else
System.out.print("2");
}
}
Powered by Froala Editor
(Option 4). Le code ne se compile pas, faisant de l'option 4 la bonne réponse. La raison pour laquelle le code ne compile pas est due au test de la deuxième instruction if-then. L'expression (streets && intersections> 1000) n'est pas valide, car streets n'est pas une expression booléenne et ne peut pas être utilisée comme élément de gauche de l'opérateur && de la logique conjonctive.
Powered by Froala Editor
Voici le résumé de votre performance.
Discussion (0)
Soyez le premier à laisser un commentaire !
Laisser un commentaire
Votre commentaire sera visible après modération.