Duvida em programação de Piramide Invertida?

[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");
}

Existem N formas de resolver, segue um exemplo:

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(" ");
		}
	}
}
1 curtida

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--);
}
}
1 curtida