Je ne peut pas envelopper la tête autour de la “dessiner un escalier avec un bâton-hommes” programme
Vous avez probablement vu avant dans une Java 1 classe: c'est un problème qui vous demande d'écrire un programme qui dessine la figure suivante:
Je dois utiliser une constante. Je ne suis pas autorisé à utiliser quoi que ce soit, mais pour des boucles, print
, et println
. Pas de paramètres, pas de tableaux. Je sais comment je pourrais le faire avec des paramètres et des tableaux, de la chance moi. Toute aide est appréciée!
Voici mon code incomplète:
public class Stairs {
public static final int LENGTH=5;
public static void main(String[] args) {
printStairs();
}
public static void printStairs() {
for (int allStairs=1; allStairs<=15; allStairs++) {
for (int spaces=1; spaces<=(-5*allStairs+30); spaces++) {
System.out.print(" ");
}
for (int stair = 1; stair <= 5; stair++) {
System.out.println(" o *******");
}
}
}
}
Vous devez vous connecter pour publier un commentaire.
Cela sonne comme des devoirs à faire à la question, donc je ne veux pas vous donner la réponse, mais essayez de le décomposer en étapes. Réfléchir sur les choses que vous savez:
1) Chaque stickman a cette forme:
2) Vous pouvez imprimer ce en utilisant le code suivant:
3) Vous pouvez imprimer plusieurs en utilisant une boucle:
Penser à ce genre de sortie ce serait vous donner, et ce qui doit être changé. Comprendre que chaque stickman doit être en retrait d'un certain montant. Comprendre comment mettre en retrait de façon appropriée basée sur la valeur de
stair
.Vous pouvez regarder la figure et d'observer que chaque stickman a 3 lignes, pour chaque ligne:
*
, ou un*
suivie par 5 espaces*
Et à la fin, la dernière ligne est
*
proportionnelle au nombre de stickmen.n
est un de moins ou un de plus, vous serez en mesure de voir que la première ligne aura toujoursn
- 1 des groupes d'espaces. 3) Comparer à l'intérieur de la figure, la ligne suivante sera moins 1 groupe de cases.Voici ma dernière tentative finale, à l'aide de mise en forme.
De sortie:
\o/
L'approche ci-dessous est aussi drôle (en fonction de votre humeur préférences), mais pas une solution complète:
De sortie:
main()
.Il y a un appel récursif à bloc avec la diminution de l'espace blanc. La récursivité se termine à
LEFT_SPACE == 0
Le récursive bloc estVoici quelques conseils:
Voici ce que j'ai finalement terminé avec:
J'ai fait un peu différemment. Le script suivant fonctionne avec n'importe quel nombre d'escaliers. J'ai commenté, alors vous devez savoir exactement ce que je fais.
}
J'ai testé le code ci-dessus et il n'a pas de travail pour moi. J'ai donc eu un aller à elle et utilisé certaines de leurs idées.