0
votes

Y a-t-il une meilleure structure pour cela d'autre si la déclaration?

J'essaie de construire un si sinon instruction ici et que vous obtenez un peu confus avec les valeurs renvoyer et le résultat booléen résultat que nous obtenons de la condition.

est-il possible d'avoir deux instructions renvoyer vrai dans ce cas ou une sortie après le premier blocage?

Y a-t-il un meilleur moyen de écrire cela? (Peut-être utiliser un commutateur ?)

Ce code fonctionne avec des retraits d'un compte courant. Je veux qu'il soit conforme aux règles suivantes:

  • retourner false si le montant à retirer est == ou <0.
  • retourne vrai si le montant doit être retiré> 0.
  • Vérifiez et retournez vrai si le montant doit être retiré> Solde. (Mais une seule fois, puisque je souhaite permettre à un compte de devenir découvert une seule fois.) xxx

0 commentaires

3 Réponses :


2
votes

Il y a peut-être plusieurs façons de l'écrire de manière plus concise, mais je le ferais comme ceci:

public boolean withdraw(double amount) {
    if (amount <= 0.0) {
        System.out.println("Withdrawal amount should be positive!");
        return false;
    }

    double fee = (amount > balance) ? overdraftFee : 0.0;
    setBalance(balance - amount - fee);
    return true;
}


2 commentaires

Donc, le deuxième bloc ici dit: si le montant est supérieur à celui de la balance, maintenez la fraise de découverte de l'opération et effectuez l'opération ci-dessous. Mais si ce n'est pas plus grand que l'équilibre, changez-vous sur 0, puis effectuez une opération?


@Kevinocampo Il ne change pas OverDraftFee , mais attribue une valeur différente à une autre variable frais



-5
votes

Vous pouvez utiliser un étui de commutation xxx


0 commentaires

3
votes

La méthode arrêtera la première fois Il frappe un retour . Un effet secondaire de ceci est que vous n'avez pas besoin d'utiliser des blocs sinon s'il aura renvoyé dans le bloc si bloque (comme tout ce qui est après ce bloc ne sera exécuté que si la condition était false ).

Plus important encore, double n'est pas un bon choix à utiliser pour les quantités de devise en Java et provoquera des erreurs d'arrondi dans votre code (i 'll expliquer plus après le bloc de code). La meilleure option est bigdecimal .

Une autre façon d'écrire serait: xxx

la raison d'utiliser Bigdecimal au lieu de double pour la devise est qu'en raison de la manière dont un double est représenté en interne, tous les nombres décimaux ne peuvent pas être stockés avec précision. Cela conduit à des erreurs d'arrondies, ce qui est important pour la monnaie. Par exemple, le test suivant échoue: xxx

avec l'erreur xxx


1 commentaires

plus-un pour bigdecimal