Last active
February 24, 2020 13:41
-
-
Save gfreivasc/c456bc916109acf0ca7898ddeda6b72f to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.gabrielfv.sandbox.triangle; | |
import java.util.Scanner; | |
public class Triangle { | |
/** | |
* Este programa deve "printar" na tela três tipos de triângulos | |
* cujo tamanho é definido pela entrada do usuário. Os tipos de | |
* triângulo são: | |
* | |
* Triângulo inclinado para a esquerda (left-leaning) | |
* * | |
* * * | |
* * * * | |
* * * * * | |
* * * * * * | |
* | |
* Triângulo inclinado para a direita (right-leaning) | |
* * | |
* * * | |
* * * * | |
* * * * * | |
* * * * * * | |
* | |
* Triângulo centralizado | |
* * | |
* * * | |
* * * * | |
* * * * * | |
* * * * * * | |
* | |
* Cada método de triângulo tem suas nuances, preste atenção | |
*/ | |
public static void main(String[] args) { | |
System.out.print("Informe a altura dos triangulos: "); | |
int height = new Scanner(System.in).nextInt(); | |
/* | |
TODO: O código abaixo é para desenhar os triângulos. É possível criar uma função para cada um. | |
*/ | |
// Esse loop desenha o triangulo left-leaning linha a linha | |
for (int i = 0; i < height; ++i) { | |
String line = lineLeanLeft(i); | |
System.out.println(line); | |
} | |
System.out.println(); // Quebra de linha para espaço entre triângulos | |
// Esse loop desenha o triangulo right-leaning linha a linha | |
for (int i = 0; i < height; ++i) { | |
String line = lineLeanRight(i, height); | |
System.out.println(line); | |
} | |
System.out.println(); | |
// Esse loop desenha o triangulo centralizado linha a linha | |
for (int i = 0; i < height; ++i) { | |
String line = lineCentered(i, height); | |
System.out.println(line); | |
} | |
} | |
/** | |
* A lógica aqui é definir quantas vezes devemos incluir o caractere '*' na linha, | |
* bem como incluir o espaço entre eles. | |
* | |
* @param line - a linha do triangulo, de cima para baixo, que deve ser desenhada | |
* @return a linha do triangulo pronta para ser "printada" na tela | |
*/ | |
private static String lineLeanLeft(int line) { | |
String content = ""; | |
// TODO: Explicar por que usa-se "<=" e não apenas "<" | |
for (int i = 0; i <= line; i++) { | |
content += "* "; | |
} | |
return content; | |
} | |
/** | |
* Além de definir o número de estrelas que devem ser desenhadas na linha, | |
* também precisamos calcular o espaço para que as linhas fiquem corretamente | |
* alinhadas à direita. | |
* | |
* TODO: Consegue explicar a lógica que permite alinhar corretamente? Explique | |
* a nível de detalhe da quantidade de espaços em branco utilizados. Por que precisamos | |
* saber a altura do triângulo agora? | |
* | |
* @param line - a linha do triangulo, de cima para baixo, que deve ser desenhada | |
* @param height - a altura do triangulo | |
* @return a linha do triangulo pronta para ser "printada" na tela | |
*/ | |
private static String lineLeanRight(int line, int height) { | |
String content = ""; | |
// cumprimento da parte vazia | |
// TODO: Explicar por que o cálculo correto é altura - linha - 1, e não apenas altura - linha | |
int blankLength = height - line - 1; | |
for (int i = 0; i < blankLength; i++) { | |
content += " "; | |
} | |
for (int i = 0; i <= line; i++) { | |
content += "* "; | |
} | |
return content; | |
} | |
/** | |
* @param line - a linha do triangulo, de cima para baixo, que deve ser desenhada | |
* @param height - a altura do triangulo | |
* @return a linha do triangulo pronta para ser "printada" na tela | |
*/ | |
private static String lineCentered(int line, int height) { | |
String content = ""; | |
// TODO: Implementar triangulo centralizado | |
/** | |
* ex.: | |
* altura = 5 | |
* * | |
* * * | |
* * * * | |
* * * * * | |
* * * * * * | |
*/ | |
return content; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment