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

    }

}

É importante especificar o que exatamente não funciona.

O que vc identificou de errado? O programa não compila? O programa compila, mas dá erro na hora de rodar? O programa compila, roda, mas não faz o que vc queria que ele fizesse?

Eu testei o código e vi que ele nem compila e os motivos são 2:

#1 Na linha abaixo vc declara uma variável do tipo int, mas tenta armazenar nela um valor do tipo double

int numero = in.nextDouble();

O correto seria:

int numero = in.nextInt();
// ou então:
double numero = in.nextDouble();

#2 Na linha abaixo vc está redeclarando a variável numero:

for (int numero = 1; numero < 50; numero++) {

Para corrigir, basta escolher um outro nome pra sua variável.

for (int n = 1; n < 50; n++) {

Aparentemente a sua lógica está correta, mas como o exercicio pede pra imprimir todos os números entre 1 e 50, não há necessidade de pedir pro usuário digitar um número.

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