Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

calculatrice (simple) en mode texte

4 réponses
Avatar
simon
bonjour ttlm,
je suis débutant en java, et je dois faire une calculatrice.
J'essaye surtout de bien comprendre l POO et ses principes.

Pour ne pas m'emcombrer je la fait pour l'instant en mode texte.

j'utilise 3 class
clavier : pour la saisie
calcul : mon objet calcul et ses méthodes
calculatrice : pour le main

malheureusement, j'arrive à faire des additions et des soustractions,
mais le reste ça marche pas terrible. ( je pense que ça vient d'un
problème de types, mais je vois pas trop comment faire ;o)


je colle mon main en dessous ( c vraiment très court )
si qq'un peu y jeter un oeil se serait vraiment cool.
merci d'avance pour votre aide.


public class Calculatrice
{ public static void main (String args[])
{ String chaine ;
double a, b, result ;
int pos;
char signe ;


System.out.println (" calclutracice texte \n tapez l'expression sur une
ligne");
chaine = Clavier.lireString ();//initialisation de la chaine

//recherche du signe si pos = -1 cela signifie que le signe
recherché est absent
pos = chaine.indexOf ('+');
signe = ('+');
if (pos < 0) {pos = chaine.indexOf ('-');
signe = ('-');}
else if (pos<0) {pos = chaine.indexOf ('*');
signe = ('*');}
else if (pos<0) {pos = chaine.indexOf ('/');
signe = ('/');}
// je converti les morceaux de la chaine en double
a = Double.parseDouble (chaine.substring (0, pos));
b = Double.parseDouble (chaine.substring (pos + 1));

// on affiche les info
System.out.println (" op1 : " + a);
System.out.println (" op2 : " + b);
System.out.println (" signe : " + signe);

//creation d'une instance de calcul avec a & b en arguments
//selon le signe on utilise la bonne méthode
Calcul cal1 = new Calcul (a, b);
result= 0;
if (signe == '+') result = cal1.additionne();
else if (signe == '-') result = cal1.soustrait();
else if (signe == 'm') result = cal1.multiplie();
else if (signe == 'd') result = cal1.divise();

System.out.println ("resultat : " + result);
}
}

4 réponses

Avatar
Joe Smith
else if (pos<0) {pos = chaine.indexOf ('*');
signe = ('*');}
else if (pos<0) {pos = chaine.indexOf ('/');
signe = ('/');}


:)

else if (signe == 'm') result = cal1.multiplie();
else if (signe == 'd') result = cal1.divise();


Avatar
captainpaf
snip
...
ça veut dire quoi indenter ???

indenter c'est mettre en forme ton code pour qu'il soit plus lisible. Par

exemple
<code illisible>
for(int i=0;i<200;i++){if(i<50)System.out.println("i < 50");else
System.out.println("i >= 50");}
</code illisible>
En indentant un peu mieux cela nous donne :
<code>
for(int i=0;i<200;i++)
{
if(i<50)
{
System.out.println("i < 50");
}
else
{
System.out.println("i >= 50");
}
}
</code>
Généralement, les développeurs java préfères indenter de cette façon :
<code>
for(int i=0;i<200;i++) {
if(i<50) {
System.out.println("i < 50");
} else {
System.out.println("i >= 50");
}
}
</code>
après, il suffit que tu sois à l'aise avec l'indentation choisie et que ton
code soit lisible.

Avatar
Adobex
Ah ben tiens puisque t'en parle ;-)

Ta première indentation est parfaite pour la lecture mais alors la
deuxième...!!
Ne donnons pas de mauvaises habitudes aux débutants!

Pensez toujours que d'autre personnes peuvent avoir à lire votre code,
aérez-le bon sang! L'écriture condensée est bonne pour les feignasses de la
roulette et encore maintenant tout le monde l'a sur sa souris.

Voici comment moi j'indenterais dans ce cas particulier (j'attends volontier
les critiques):

<code>
for (int i = 0; i < 200; i++)
{
if (i < 50) System.out.println("i < 50");
else System.out.println("i >= 50");
}
</code>

Remarque la multitude d'espaces ;-)

Bon de toute façon personne ne sera d'accord sur "une bonne indentation"
mais par contre l'accolade en fin de ligne me paraît absurde... du moins
j'ai beaucoup de mal et pourtant ça m'arrive de l'utiliser :/

Adobex

"captainpaf" a écrit dans le message de
news:bfjkdd$p5d$
snip
...
ça veut dire quoi indenter ???

indenter c'est mettre en forme ton code pour qu'il soit plus lisible. Par

exemple
<code illisible>
for(int i=0;i<200;i++){if(i<50)System.out.println("i < 50");else
System.out.println("i >= 50");}
</code illisible>
En indentant un peu mieux cela nous donne :
<code>
for(int i=0;i<200;i++)
{
if(i<50)
{
System.out.println("i < 50");
}
else
{
System.out.println("i >= 50");
}
}
</code>
Généralement, les développeurs java préfères indenter de cette façon :
<code>
for(int i=0;i<200;i++) {
if(i<50) {
System.out.println("i < 50");
} else {
System.out.println("i >= 50");
}
}
</code>
après, il suffit que tu sois à l'aise avec l'indentation choisie et que
ton

code soit lisible.





Avatar
Adobex
Oulah, en effet, leurs conventions de code ne me correspondent pas du
tout...

merci pour le lien.


"captainpaf" a écrit dans le message de
news:bflc44$bgb$

Je suis complètement d'accord avec toi, je préfère nettement la 1ère façon
(que j'utilise tout le temps) à la deuxième. Cela me permet en plus de me
forcer à écrire des méthodes courtes.
J'ai mis la deuxième manière d'indenter car elle est malheureusement en
accord avec la java code convention :(
(http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html).