2010-04-06 4 views
2

Donc, techniquement, un booléen est Vrai (1) ou Faux (0) ... comment puis-je utiliser un booléen dans une boucle?Utiliser la valeur booléenne pour la boucle

donc si FYEProcessing est faux, exécutez cette boucle une fois, si FYEProcessing est vrai, exécutez deux fois:

for (Integer i=0; i<FYEProcessing; ++i){ 
    CreatePaymentRecords(TermDates, FYEProcessing);  
} 
+0

Comme une note de côté, si vous êtes à la recherche d'une valeur booléenne à l'intérieur d'une boucle, semble vous pouvez utiliser 'while' mais il ne pas travailler avec De quoi as-tu besoin. –

+1

Nit: Je pense que votre "i

+1

Vous devez également utiliser int au lieu de Integer, bien que vous n'accédiez jamais à la variable 'i'. L'utilisation de Integer ajoute simplement des frais généraux sans raison. –

Répondre

7

donc techniquement un booléen est vrai (1) ou faux (0)

Cela n'est pas vrai en Java. Vous ne pouvez pas utiliser un entier à la place d'une expression booléenne dans un conditionnel, c'est-à-dire que if (1) {...} n'est pas légal.

Vous êtes mieux de simplement le faire de manière séquentielle plutôt que d'essayer d'utiliser une sorte de stratégie en boucle pour éviter d'avoir deux lignes qui appellent CreatePaymentRecords()

CreatePaymentRecords(TermDates, FYEProcessing); 
if (FYEProcessing) { 
    //run again 
    CreatePaymentRecords(TermDates, FYEProcessing); 
} 
+0

merci, cela fonctionnera ... avec une petite modification, j'ai besoin de createPaymentRecords pour entrer un 0 la première fois et un 1 la deuxième fois, donc je dois dur code les valeurs ... – Leslie

-1

si vous voulez simplement exécuter ce aussi longtemps que le booléen est une valeur particulière puis utilisez une boucle do ou while.

do { CreatePaymentRecords(TermDate, FYEProcessing); } while (FYEProcessing); 
+0

À moins que CreatePaymentRecords ne mette à jour la valeur de FYEProcessing (ce qui n'a pas été dit), cette boucle ne sera jamais fermée. –

+0

étant donné la question "comment puis-je utiliser un booléen dans une boucle?" ma réponse est informative. Peut-être que l'auteur sait à propos de faire ou en boucles. L'utilisation de l'instruction if publiée n'est pas un code que la plupart des gens aimeraient déboguer. –

7
for (int i=0; i < (FYEProcessing ? 2 : 1); ++i){ 
    CreatePaymentRecords(TermDates, FYEProcessing);  
} 
1

Pour une boucle qui utiliserait un booléen vrai/faux pour la condition, il suffit d'utiliser do {...} while (condition) ou while (condition) {...}. Le premier sera toujours exécuté au moins une fois, puis vérifier la condition. La seconde ne s'exécuterait que si la condition était initialement vraie.

0

Je pense que nous devrions nous efforcer de rendre le code clairement compréhensible et j'ai du mal à penser où "la boucle booléenne" est claire. Essayer d'utiliser une "boucle booléenne" peut sembler plus lisse dans le code, mais je pense que cela nuit à la compréhensibilité et à la maintenabilité du code.

Je distillés ce que vous avez décrit:

donc si FYEProcessing est faux, exécutez cette boucle une fois, si FYEProcessing est vrai, exécutez deux fois

dans

si si FYEProcessing est False, exécutez cette boucle une fois [avec false], si FYEProcessing est vrai, exécutez-le deux fois [avec false, puis true]

ou

terme de cette boucle une fois avec de faux. Si FYEProcessing est vrai, exécutez-le à nouveau avec une véritable

CreatePaymentRecords(TermDates, false); 
if (FYEProcessing) { 
    CreatePaymentRecords(TermDates, true); 
}