Logique inversée
Voici ce qui peut arriver pour une exécution du programme :
Combien vous reste-t-il de centimes ? 50000
Vous pouvez acheter le sweet.
Le bloc true a été exécuté car l'expression
booléenne valait true. Voici une aute exécution du
programme :
Combien vous reste-t-il de centimes ? 15000
Vous ne pouvez pas acheter le sweet.
Il vous manque 49.90 francs.
Le bloc false s'est exécuté car l'expression booléenne
valait false.
Rappelez-vous bien que les expressions booléennes sont toujours
soient
true soient false. En utilisant le bon opérateur
relationnel (==, >, <, etc.) vous pouvez posez une question
qui sera true lorsque vous voudrez que l'alternative true
soit exécutée. L'alternative true n'est pas forcément
le "bon choix". Si les instructions contenues dans les deux alternatives
sont inversées, vous n'aurez qu'à changer d'opérateur
relationnel pour que le programme se comporte correctement.
Voici de nouveau le programme, avec les alternatives true et
false
inversées :
import java.io.*;
class SweaterPurchase
{
public static void main (String[] args) throws IOException
{
final int price = 19990; // prix en centimes
BufferedReader stdin =
new BufferedReader ( new InputStreamReader( System.in ) );
String inData;
int cash;
System.out.print("Combien vous reste-t-il de centimes ?");
inData = stdin.readLine();
cash = Integer.parseInt( inData );
if ( __________________ )
{
System.out.println("Vous ne pouvez pas acheter le sweet." );
System.out.println("Il vous manque " +
(price-cash)/100 + "." + (price-cash)%100 + " francs." );
}
else
System.out.println("Vous pouvez acheter le sweet." );
}
}
|
|