Faites des Boucles While Par rapport aux Boucles For en Java pour Compter


Quand il s'agit de compter, faut-il utiliser une boucle do-while ou une boucle for? Parce que ceci:

class Main {
  public static void main(String[] args) {
    int times = 1;
    do {
      System.out.println("I have printed " + times + " times.");
      times++;
    } while (times < 6);
  }
}

Semble faire exactement la même chose comme ceci:

class Main {
  public static void main(String[] args) {
    for (int times = 0; times < 6; times++) {
      System.out.println("I have printed " + times + " times.");
    }
  }
}

Est-ce une différence de vitesse? De préférence? Situation? Bizarreries personnelles? Une sorte de "tabou social Java"? Aucune idée. Soit semblent pouvoir être utilisés pour un comptage efficace, juste que l'on prend beaucoup plus. Et les deux impriment le exact même chose.

Author: TylerH, 2018-10-09

5 answers

Vous avez raison, ceux-ci font la même chose (sauf que l'un commence à compter à 0 et l'autre à 1, mais ce n'est qu'un détail d'implémentation). Si votre programme sait à l'avance (avant le début de la boucle) combien de fois vous voulez que la boucle itère, la plupart des développeurs Java vous diront d'aller avec une boucle for. Qu'est ce que c'est conçu pour.

Une boucle while ou une boucle do while convient mieux aux situations où vous recherchez une valeur ou une condition spécifique avant de quitter la boucle. (Quelque comme count >= 10 ou userInput.equals("N"). Tout ce qui est évalué à une valeur booléenne True/False.)

 8
Author: Bill the Lizard, 2018-10-10 12:34:16

Face à ce genre de dilemmes, visez la lisibilité et la familiarité. Vous ne devriez pas vous préoccuper des micro-optimisations. Concentrez-vous sur la lisibilité et transmettez clairement votre intention. Faites comme les autres dans une situation similaire.

Comme l'a dit @Bill-The-Lizard, while loop suggère au lecteur de votre code que vous avez opté pour cela, car vous ne comptez pas, mais répétez jusqu'à ce qu'une condition soit remplie. Au moins une fois - sinon vous auriez choisi while(...){ } loop.

En d'autres termes, for, do {} while() et while() { } fonctionnent généralement de la même manière. Mais on peut mieux vous transmettre l'intention dans votre morceau particulier de logique.

 4
Author: rzymek, 2018-10-09 20:57:22

Je pense que c'est plus une lisibilité et un sucre syntaxique. Cette condition while

while (condition)

Peut aussi s'écrire comme

for (; condition; )

Mais évidemment le premier semble beaucoup mieux et est plus lisible.

 0
Author: stackFan, 2018-10-09 21:05:50

Cela dépend du choix du programmeur quand utiliser for loop ou do while loop mais la pratique générale suivie par la plupart des programmeurs est

  • Pour la boucle
    Quand vous savez que la boucle exécutera un nombre prédéfini de fois (pratique générale puisque vous pouvez également utiliser for(;true;) qui boucle pour toujours). Par exemple, une boucle qui s'exécute 10 fois ou n fois, où n est une variable


for(int i = 0; i < n; i++) {
    //Do something
}
  • Alors que la boucle
    Quand vous savez que la boucle devrait terminez après l'évaluation d'une condition spécifique comme true ou bien vous voulez que la boucle s'exécute pour toujours (comme while(true)) et vérifiez les conditions de rupture à l'intérieur de la boucle while.
    De plus, la boucle while est préférée lorsque vous ne pouvez pas comprendre les conditions en premier lieu et commencer par while(true) mais une fois que vous écrivez du code à l'intérieur de la boucle, vous comprenez bien ce qui se passe et vous avez l'idée des conditions à vérifier ainsi quand quitter la boucle. Pour exemple


while(x != 0) {
    //Do something;
    x--;
}


while(true) {
    // some code to execute on which the condition depends
    if(condition is true) {
        break;
    }
}
  • Faire en boucle
    Boucle Do while est similaire à la boucle while, mais avec une petite différence. C'est-à-dire qu'il permet à la première itération de se produire sans vérifier la condition(spécifiée dans l'instruction while, mais vous pouvez toujours évaluer la condition à l'intérieur du bloc(accolades)).
 0
Author: shirish, 2018-10-09 21:13:52

Par convention, la plupart des développeurs Java utilisent des boucles for. Java efficace recommande les boucles for au lieu des boucles while car la variable loop peut utiliser une portée plus étroite qui réduit les bogues. http://www.corejavaguru.com/effective-java/items/45

 0
Author: neildo, 2018-10-09 21:25:24