[PiramideInvertida] [8] Faça o programa que apresenta a seguinte saída, perguntando ao usuário o número máximo (no exemplo, 9). Este número deve ser sempre ímpar. 1 2 3 4 5 6 7 8 9 2 3 4 5 6 7 8 3 4 5 6 7 4 5 6 5.
Alguém pode me ajudar?
int n;
n = Integer.parseInt(JOptionPane.showInputDialog("Digite um número ímpar"));
if (n % 2 == 1) {
for (int i = 1; i <= n; i++) {
mostra += i + " ";
}
System.out.println(mostra+" "+m);
} else {
System.out.println("Não é ímpar");
}
import javax.swing.JOptionPane;
public class PiramideInvertida {
public static void main(String[] args) {
PiramideInvertida programa = new PiramideInvertida();
programa.executar();
}
private void executar() {
int numeroMaximo = Integer.parseInt(JOptionPane.showInputDialog("Digite um número ímpar"));
if (numeroMaximo % 2 != 0) {
int metade = (numeroMaximo + 1) / 2;
for (int numero = 0; numero < metade; numero++) {
imprimeLinha(numero, numero + 1, numeroMaximo - numero);
}
} else {
System.out.println("Não é ímpar");
}
}
private void imprimeLinha(int espacos, int de, int ate) {
imprimeEspacos(espacos);
for (int numero = de; numero <= ate; numero++) {
System.out.print(numero);
}
System.out.println();
}
private void imprimeEspacos(int espacos) {
for (int i = 0; i < espacos; i++) {
System.out.print(" ");
}
}
}
Apenas para enriquecer a codificação sobre o tema uma vez que staroski apresentou muito bem a solução, tanto é que não “tendi” para fornecer ao usuário tudo o que foi solicitado.
package legals;
public class Crisis {
public static void main(String[] args) {
new Crisis().piramideInvertida(1, 19);
}
private void piramideInvertida(int inicio, int fim) {
do{
for (int i = inicio; i <= fim; i++) {
System.out.print(i + (i == fim ? "\n" : ""));
}
for (int i = 0; i < inicio; i++) {
System.out.print(" ");
}
/*inicio++ reduz o lado direito da coluna e atualiza o espaço
fim-- reduz o lado esquerdo da coluna*/
}while(inicio++ <= fim--);
}
}