QUIZ N°4 - Structures conditionnelles
Question 1
Lequel des types de variable suivants n'est pas autorisé dans une instruction switch ?
- String
- double
- int
- char
(Option 2).Une instruction switch prend en charge les types primitifs octet, short, char et int, ainsi que les classes String, Character, Byte, Short et Integer. Il prend également en charge les types énumérés. Les types à virgule flottante tels que float et double ne sont pas pris en charge. Par conséquent, l'option 2 est la bonne réponse.
Question 2
Quel est le résultat du programme suivant?
package registration; public class NameCheck { public static void main(String... data) { String john = "john"; String jon = new String(john); System.out.print((john == jon) + " " + (john.equals(jon))); } }
- true true
- true false
- false true
- false false
(Option 3).La première affectation crée un nouvel objet String "john". La deuxième ligne utilise explicitement le mot-clé new, ce qui signifie qu'un nouvel objet String est créé. Comme ces objets ne sont pas identiques, le test == sur eux est évalué à false. Le test equals () sur eux renvoie true car les valeurs auxquelles ils font référence sont équivalentes. Par conséquent, la bonne réponse est 3.
Question 3
Quel est le résultat du programme suivant?
package planning; public class ThePlan { public static void main(String[] input) { int plan = 1; plan = plan++ + --plan; if(plan==1) { System.out.print("Plan A"); } else { if(plan==2) System.out.print("Plan B"); } else System.out.print("Plan C"); } }
- Plan A
- Plan B
- Plan C
- Aucune de ces réponses
(Option 4).Ce code ne compile pas car il contient deux instructions else faisant partie d'une seule instruction if-then. Notez que la seconde instruction if n'est pas connectée à la dernière instruction else. Pour cette raison, l'option 4, aucune de ces réponses, est la bonne réponse.
Question 4
Laquelle des déclarations suivantes concernant une branche defaultdans une instruction switch est correcte?
- Toutes les instructions switch doivent inclure une instruction default.
- La déclaration default doit être placée après toutes les déclarations de case.
- Contrairement à une déclaration case, la déclaration default ne prend pas de valeur.
- Une instruction default ne peut être utilisée que si au moins une instruction case est présente.
(Option 3). Une instruction default à l’intérieur d’une instruction switch est facultative et peut être placée dans n’importe quel ordre dans les instructions case du switch, ce qui rend les options 1 et 2 incorrectes. L'option 4 est une instruction incorrecte, car une instruction switch peut être composée d'une seule instruction default et d'aucune instruction case. L'option 3 est correcte car une instruction default ne prend pas de valeur, contrairement à une instruction case.
Question 5
Quelle est la valeur de nombre après l'exécution de l'extrait de code suivant?
long unnombre = 5 >= 5 ? 1+2 : 1*1; if(++unnombre < 4) unnombre += 1;
- 3
- 4
- 5
- La réponse ne peut pas être déterminée avant l'exécution.
(Option 2). L'attribution initiale de unnombre suit la première branche de l'expression ternaire. Étant donné que 5> = 5 a la valeur true, une valeur de 3 est attribuée à nombre. Sur la ligne suivante, l'opérateur de pré-incrémentation incrémente la valeur de unnombre à 4 et renvoie la valeur 4 à l'expression. Puisque 4 <4 est évalué à false, le bloc if-then est ignoré. Cela laisse la valeur de unnombre à 4, faisant de l'option 2 la bonne réponse.
Question 6
Quelle instruction quitte immédiatement une instruction switch, en ignorant toutes les branches de casse ou dafault restantes?
- exit
- break
- goto
- continue
(Option 2). L'instruction break quitte une instruction switch en ignorant toutes les branches restantes et en donnant à l'option 2 la réponse correcte. Dans l'option 1, exit n'est pas une instruction en Java. Dans Option 3, goto est un mot réservé mais non utilisé en Java. Enfin, dans l'option 4, continue est une instruction mais utilisée uniquement pour les boucles.
Question 7
Quel est le résultat du programme suivant?
package voting; public class Election { public void calculateResult(Integer candidateA, Integer candidateB) { boolean process = candidateA == null || candidateA.intValue() < 10; boolean value = candidateA && candidateB; System.out.print(process || value); } public static void main(String[] unused) { new Election().calculateResult(null, 203); } }
- true
- false
- Le code ne compile pas.
- Le code est compilé mais lève une exception NullPointerException sur la ligne 3 au moment de l'exécution.
(Option 3). Sur la ligne 4, candidatA et candidatB sont des nombres, mais l'opération && ne peut être appliquée qu'aux expressions booléennes. Par conséquent, le code ne se compile pas à cause de la ligne 6, ce qui donne 3 la réponse correcte.
Question 8
Quelle déclaration sur les déclarations de case d'une instruction switch n'est pas vraie ?
- Une valeur de case peut être finale.
- Une déclaration de case doit être terminée par break.
- Une valeur de case peut être une expression littérale.
- Une valeur de case doit correspondre au type de données de la variable de switch ou pouvoir être promue à ce type.
(Option 2). Une valeur de case doit être une expression constante, telle qu'une variable littérale ou finale, afin que les options 1 et 3 soient des déclarations vraies concernant les valeurs de case. Une instruction case peut être résiliée par une instruction break, mais elle n’est pas obligatoire, ce qui fait de l’Option 2 la déclaration fausse et la réponse correcte. L'option 4 est également une affirmation vraie sur les valeurs de case.
Question 9
Remplir les espaces vides:
L'opérateur___________ augmente la valeur d'une variable de 1 et renvoie la nouvelle valeur, tandis que l'opérateur__________ diminue la valeur d'une variable de 1 et renvoie la valeur d'origine.
- Pré-incrémentation [++ v], pré-décrémentation [--v]
- Pré-incrémentation [++ v], post-décrémentation [v--]
- Post-incrémentation [c ++], pré-incrémentation [--vs]
- Post-incrémentation [c ++], post-décrémentation [v--]
(Option 2). Les opérateurs de pré-incrémentation modifient la variable et évaluent la nouvelle valeur, tandis que les opérateurs post-décrémentation modifient la variable mais renvoient la valeur d'origine. Par conséquent, l'option 2 est la bonne réponse.
Question 10
Étant donné l'extrait de code suivant, quelle est la valeur de RDV après son exécution?
int heure = 11; int jour = 4; String RDV = heure > 10 ? jour ? "Samedi" : "Vendredi" : "Dimanche";
- Samedi
- Vendredi
- Le code ne compile pas mais compilerait si des parenthèses étaient ajoutées.
- Aucune de ces réponses
(Option 4). Bien que les parenthèses soient recommandées pour les opérations ternaires, en particulier les opérations incorporées, elles ne sont pas obligatoires. L'option 3 est donc incorrecte. Le code ne se compile pas car jour est une expression int, et non une expression booléenne, dans la deuxième opération ternaire, ce qui permet à l'option 4 d'être la bonne réponse.
N'oubliez pas qu'en Java, les valeurs numériques ne sont pas acceptées à la place des expressions booléennes dans les instructions if-then ou les opérations ternaires.