Pour faire ta boucle, tu as écrit :
for (int i = 0; i < height; i++) {
Essayes d'inverser le sens de progression de la boucle en changeant cette ligne en
for (int i = height; i >=0; i--) {
tu verras que ton triangle aura la pointe en bas.
Donc si à la suite, tu mets le code que tu as fait, puis le même, avec cette boucle inversée, et tu auras les 2 triangles l'un après l'autre, qui formeront un losange.
A noter, qu'avec ta solution, il y a une ligne vide au début. Pour supprimer cette ligne vide, il suffit de modifier la boucle de cette manière :
for (int i = 1; i < height; i++) {
et, en conséquence, la seconde, pour le triangle inversé, en :
for (int i = height; i >0; i--) {
Donc le code du losange devient, tout simplement :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| public static void trianglePrint(int height) {
for (int i = 1; i < height; i++) {
for (int s = 0; s < height - i; s++) {
System.out.print(" ");
}
for (int k = 0; k < 2 * i - 1; k++) {
System.out.print("*");
}
System.out.println();
}
}
public static void diamondPrint(int height) {
trianglePrint(height);
for (int i = height; i > 0; i--) {
for (int s = 0; s < height - i; s++) {
System.out.print(" ");
}
for (int k = 0; k < 2 * i - 1; k++) {
System.out.print("*");
}
System.out.println();
}
} |
On pourrait factoriser, mais je n'ai pas l'impression que cela soit l'objet de l'exercice (à toi de voir) :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| public static void trianglePrint(int height) {
for (int i = 1; i < height; i++) {
printLine(height, i);
}
}
public static void diamondPrint(int height) {
trianglePrint(height);
for (int i = height; i > 0; i--) {
printLine(height, i);
}
}
private static void printLine(int height, int i) {
for (int s = 0; s < height - i; s++) {
System.out.print(" ");
}
for (int k = 0; k < 2 * i - 1; k++) {
System.out.print("*");
}
System.out.println();
} |
Pour la V-shape, essayes de changer les "*" en " ", et les " " en "*", tu pourras surement entrevoir la solution...
Partager