2017-09-27 7 views
-1

Je suis conscient que l'opérateur d'incrément = ++ i, est un raccourci pour i = i +1
tandis que l'opérateur raccourci pour la décrémentation est --i (l'opérateur décrément est i = i -1).Astérisques supplémentaires dans ma sortie

Dans ce cas, j'essaie d'imprimer une certaine quantité d'astérisques pour numStars et donc je suis allé avec l'opérateur d'incrémentation (i = i + 1). Je suis allé avec numPrinted = numPrinted + 1 pour incrémenter. Voici un bref coup d'oeil du code:

numStars = 12; 
    numPrinted = 1; 

    while (numPrinted < numStars) { 
    numStars = numStars * numPrinted; 
    numPrinted = numPrinted + 1; //Went for increment since I'm assuming 
    additional asterisks will be shown 

    System.out.print("*"); /* My output produces a total of 14 asterisks 
    whereas the expected output wants 12 asterisks */ 

    } 

Voyant que le résultat attendu est de 12 et numStars = 12 déjà, était-il nécessaire de me mettre numStars = numStars * numPrinted? Parce que je pense que cela pourrait être la raison pour laquelle il y a ces deux astérisques supplémentaires dans ma sortie plutôt que seulement 12 astérisques. A moins que les deux astérisques supplémentaires soient là à cause de ma décision d'incrémenter numPrinted?

Merci d'avance pour l'aide et les suggestions qui seront faites ici.

+0

Non, vous devez traiter 'numStars' comme une constante, et vous ne devriez certainement pas le multiplier avec 'numPrinted'. Vous devriez aussi changer votre boucle 'while' en une boucle' for'. – Andreas

+0

[Qu'est-ce qu'un débogueur et comment peut-il m'aider à diagnostiquer des problèmes?] (Https://stackoverflow.com/q/25385173/5221149) – Andreas

Répondre

0

Votre boucle continuera jusqu'à ce que numPrint soit supérieur ou égal à numStars.

Si vous savez que vous voulez 12 boucles, vous ne devriez pas changer la valeur de numStars, seulement de numPrinted.

En outre, numPrinted ne doit pas commencer à 1. Cela entraînera 11 étoiles.

La bonne façon de structurer la boucle, (si vous souhaitez utiliser une boucle while au lieu d'une boucle) est la suivante:

numStars = 12; 
    numPrinted = 0; 

    while (numPrinted < numStars) { 
    numPrinted = numPrinted + 1; 
    System.out.print("*"); 
    } 
+0

Donc, je vais devoir garder numStars à la même valeur afin de produire la sortie attendue de 12 astérisques. Je suis retourné pour essayer de changer la valeur de numPrinted de 1 à 0 comme vous l'avez suggéré ici. Cependant, l'exercice ne me laisse pas changer les numéros par défaut (si cela a du sens). Au contraire, il me laisse seulement changer ma boucle while. Serait-il encore possible de produire 12 astérisques même si numPrinted = 0? – acruz30

+0

Pouvez-vous changer l'état de la boucle while? Vous pouvez utiliser "while (numPrinted <= numStars)" au lieu de "while (numPrinted user3362196

+0

merci de pouvoir produire 12 astérisques lorsque je suis passé de <à <=. Si cela ne vous dérange pas, le changer pour <= a aidé à obtenir le nombre exact de 12 astérisques? Et devrais-je m'entraîner en utilisant <= plutôt que acruz30

-1

Dans quelle langue codez-vous?

Vous pouvez essayer:

numStars = 12; 
    numPrinted = 0; 

    while (numPrinted < numStars) { 
    numPrinted = numPrinted + 1; //increment by one 

    System.out.print("*"); /* Print one asterisk */ 
    } 

commence à compter de 0, sinon 11 astérisques seront imprimés.

+0

Je suis en train de coder en Java. Un autre utilisateur est allé de l'avant et a également suggéré que numPrinted soit affecté à 0 comme valeur. Cependant, l'exercice me permet seulement de corriger ma boucle while et je ne suis pas capable de changer les valeurs par défaut telles que numPrinted = 1; dans l'exercice. Est-il possible d'imprimer 12 astérisques même si numPrinted commence à 1? – acruz30

+0

Oui, utilisez 'while (numPrinted <= numStars)' ou 'while (numPrinted Enis