Porque meu código não funciona?

Exercício 1

Faça um programa que imprima na tela apenas os números ímpares entre 1 e 50

Meucodigo.java ( NetBeans 7 )
Por que meu código não funciona?
import java.util.Scanner;
public class JavaApplication2 {

    public static void main(String[] args) {
    Scanner in = new Scanner(System.in);

    System.out.println("Digite uma numero:");
    int numero = in.nextDouble();

    while(numero < 1 || numero > 50 ){

    System.out.println("Numero invalido! Digite outra numero.");
    numero = in.nextDouble();



} System.out.println("Numero valido!");



for (int numero = 1; numero < 50; numero++) {
    if (numero % 2 != 0) {
        System.out.println("Numero valido!, valor impar:" + numero);
        System.out.println(numero);
    }
}

    }

}

1 - int numero = in.nextDouble();

A variável é inteira (int) mas está recebendo um ponto flutuante duplo (double)?

2 - for (int numero = 1; numero < 50; numero++)

Você está tentando redefinir a variável numero no for.

3 - Como é uma range (de 1 a 50), deveria haver um array de números.

Uma entre várias possíveis soluções:

import java.util.Scanner;
public class JavaApplication2 {

    public static void main(String[] args) {
		int numero;
		int contador = 0;
		int[] numeros = new int[50];
		Scanner in = new Scanner(System.in);

		do{
			System.out.print("Digite o número: ");
			numero = in.nextInt();
			
			if(numero >= 1 && numero <= 50 && numero % 2 != 0)
				numeros[contador++] = numero;
			
			else
				System.out.println("Número inválido!");
			
		}while(contador < 50 && numero != -999);
		
		System.out.println("\nResultado");
		
		for(int i = 0; i < contador; i++){
			System.out.print(" " + numeros[i]);
		}
    }
}

Rodando…

image

Duplicado: Porque meu código não funciona?