Numeros impares em ordem oposta

Ola pessoal estou precisando fazer uma algoritmo que imprima os n numeros impares em ordem inversa.Só que o codigo que eu fiz está imprimindo o proprio numero que eu digito o que a de errado com meu codigo, ou o que eu devo fazer para ele funcionar certo?Obrigado desde já !

public static void main(String[] args) {
		// TODO Auto-generated method stub
		int n;
		int primeiro;
		Scanner tec = new Scanner(System.in);
		System.out.println("digite um numero");
		n = tec.nextInt();
		primeiro = 2 * n -1;
		for (int i = primeiro; i > 1; i--);
		System.out.println(n);

	}

}

Há duas linhas erradas no seu código.

         for (int i = primeiro; i > 1; i--);  
         System.out.println(n);  

Tenta isso :

[code] int n;
java.util.Scanner tec = new java.util.Scanner(System.in);
System.out.println(“digite um numero”);
n = tec.nextInt();

        for (int i = 0;   n > i; n--){
        	if( n % 2 > 0)
        	System.out.println(n);   
        }[/code]

Por um acaso ficaria assim?

for (int i = primeiro; i > 1; i++); System.out.println(i);

Explicando :

[code] int n;
java.util.Scanner tec = new java.util.Scanner(System.in);
System.out.println(“digite um numero”);
n = tec.nextInt();

        for (int i = 0;   n > i; n--){ // o int i deve ser 0 para que imprima o 1, depois verifica se n é maior que i
        	if( n % 2 > 0)  // aqui checa se o resto da divisão por 2 é > 0, que é verdadeiro para numeros impares
        	System.out.println(n);   // imprime o numero impar
        }[/code]

[quote=manuel]Por um acaso ficaria assim?

for (int i = primeiro; i > 1; i++); System.out.println(i); [/quote]

  1. Veja aquele ponto-e-vírgula escondido depois do for. Ele significa que essa é um comando vazio, e ele vai executar o programa vazio n vezes.

  2. Veja a condição de parada do teu for, enquanto i for maior que 1, e você continua incrementando o valor de i. Das duas uma:

-O teu entraria em loop infinito se i for igual ou maior a 1¹.
-Ele só executaria for uma vez nos outros casos.

PS: ¹ - o loop não é infinito por que o i vai sofrer overflow e voltar para Integer.MIN