fork download
  1. import java.util.Arrays;
  2.  
  3. class Diamante {
  4.  
  5. private static final String[] ALFABETO = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"};
  6.  
  7. public static void montar(String escolhida) {
  8. int maximo = Arrays.binarySearch(ALFABETO, escolhida); // Encontra a posição da letra passada como parâmetro
  9. boolean par = (maximo % 2) == 0; // Verifica se o número é par ou impar para cálculo da posição
  10. int metade = Math.floorDiv(maximo, 2); // Encontra a posição onde ficará o meio do diamante
  11. String espacos = " ".substring(0, metade); //Corta o número de espaços para realizar o espelhamento
  12. int posicao = 0; // Inicia o contador de posição
  13.  
  14. for (int indice = 0; indice <= maximo; indice++) {
  15. String letra = ALFABETO[indice];
  16. StringBuilder construtor = new StringBuilder(espacos); // Monta um StringBuilder para substituição das letras
  17. String texto;
  18.  
  19. // Se for a primeira posição ou a última não espelha o texto
  20. if (posicao == 0) {
  21. texto = espacos + letra + espacos;
  22. } else {
  23. construtor.setCharAt(posicao - 1, letra.charAt(0)); // Coloca a letra na posição correta dentro da String de espaços
  24. texto = construtor.toString();
  25. texto = inverter(texto) + " " + texto; // Inverte o texto obtido criando espelhamento
  26. }
  27.  
  28. System.out.println(texto); // Imprime na tela
  29.  
  30. if (indice < metade) { // Caso ainda não tenha passado da metade, coloca mais espaços
  31. posicao++;
  32. } else if (par || indice > metade) { // Caso tenha passado da metade ou seja par e esteja na metade começa a remover espaços
  33. posicao--;
  34. }
  35. }
  36. }
  37.  
  38. public static String inverter(String texto) {
  39. StringBuilder construtor = new StringBuilder(texto);
  40.  
  41. return construtor.reverse().toString();
  42. }
  43.  
  44. public static void main(String[] args) {
  45. montar("H");
  46. }
  47. }
  48.  
Success #stdin #stdout 0.17s 2841600KB
stdin
Standard input is empty
stdout
   A   
  B B  
 C   C 
D     D
E     E
 F   F 
  G G  
   H