Skip to content

Instantly share code, notes, and snippets.

@wagfim
Last active May 16, 2019 02:32
Show Gist options
  • Save wagfim/f0fbda1bd221acaaef2b1d8cdbe9fb9e to your computer and use it in GitHub Desktop.
Save wagfim/f0fbda1bd221acaaef2b1d8cdbe9fb9e to your computer and use it in GitHub Desktop.
Desenhe um X com o numero de linhas informado pelo usuário.
public class Lista {
public static void main(String[] args) {
int num; //tamanho do X
int qtdParagrafo; //quantidade de espaços antes de cada linha
String paragrafo = ""; //String do paragrafo
int qtdEspacosInterior; //quantidade de espaços entre cada braço do X
String espacoInterior = ""; //String do espaço entre os braços
int linhas; //quantidade de linhas antes e depois do meio
Scanner leitor = new Scanner(System.in);
// ---------
while (true) {
System.out.print("Informe um numero positivo ímpar: "); //lê o tamanho do X
num = leitor.nextInt();
if (num > 0 && num%2 != 0) break; //só sai do while quando for digitado um numero positivo impar
}
// --------- Ajustes para a 1º linha
qtdEspacosInterior = num-2; //quantidade de espaços entre os braços do X na 1ª linha
for (int i = 0; i < qtdEspacosInterior; i++) {
espacoInterior+=" "; //preenche o espaço interior
}
qtdParagrafo = 0; //quantidade de espaços no paragrafo
linhas = num/2; //calcula a quantidade de linhas antes e depois do eixo
// --------- LINHAS DE CIMA ----------
for (int i = 0; i < linhas; i++) {
System.out.println(paragrafo+"X"+espacoInterior+"X"); //desenha a linha
paragrafo+=" "; //preenche mais um espaço no paragrafo para a proxima linha
qtdParagrafo++; //guarda a quantidade de paragrafo (para ser usada abaixo do eixo)
espacoInterior = ""; //esvazia o espaço interior para ser preenchido corretamente
qtdEspacosInterior-=2; //diminui o espaço entre os braços (-2 a cada linha)
for (int j = 0; j < qtdEspacosInterior; j++) {
espacoInterior += " "; //preenche o espaço interior
}
} //fim linhas de cima
// --------- EIXO ----------
System.out.println(paragrafo+"X"); //onde os braços se cruzam
// --------- Ajustes para a 1º linha abaixo do eixo
espacoInterior = " "; //a primeira linha abaixo do eixo sempre tem apenas 1 espaço no interior
qtdEspacosInterior = 1; // -> assim sendo a qtd de espaços no interior vai começar com 1
qtdParagrafo--; //nas linhas abaixo do eixo o paragrafo vai diminuindo -1 a cada linha
// --------- LINHAS DE BAIXO ----------
for (int i = 0; i < linhas; i++) {
paragrafo = ""; //esvazia o paragrafo para ser preenchido corretamente
for (int j = 0; j < qtdParagrafo; j++) {
paragrafo += " "; //preenche corretamente o paragrafo
}
System.out.println(paragrafo+"X"+espacoInterior+"X"); //desenha a linha
espacoInterior = ""; //esvazia o espaço interior para ser preenchido corretamente
qtdEspacosInterior+=2; //abaixo do eixo o espaço interior aumenta 2 a cada linha
for (int j = 0; j < qtdEspacosInterior; j++) {
espacoInterior += " "; //preenche corretamente o espaço interior
}
qtdParagrafo--; //diminui a quantidade (-1) de espaços do paragrafo
} //fim linhas de baixo
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment