Problemas com nextLine()

Olá pessoal, estou com dificuldades para usar o nextline(). Se alguém puder me ajudar ficarei muito grato. Iniciei em java faz poucos dias.

Bom, meu problema é o seguinte:

Eu estou fazendo um programa para converter binários, decimais, octais e hexadecimais. Meu programa está dividido até o momento em duas classes, sendo a Main e uma chamada Binario que seria a classe que realizará as conversões de binário para os outros tipos.

na minha Main eu tenho 1 menu com um while, ex:

while(true) {
1 - binario
2 - octal
3 - decimal
4 - hexadecimal
5 - sair
} //fim do while

eu pego a opcao digitada com um objeto Scanner que chamo de input e passo o valor para uma variavel chamada opcao = input.nextInt() que chama a classe referente a opcao digitada com switch (no caso é a classe Binario). Até aqui tudo beleza, o problema vem quando escolho a opcao 1 (no caso pq é ainda a única que criei), então o programa mostra uma mensagem com um sub-menu dentro de outro while:

while(loop == true)
De binário para…

1 - …Octal
2 - …Decimal
3 - …Hexadecimal
4 - voltar

digite a opcao de conversão desejada:

aqui há outro switch que direciona para a opçao desejada e exibe a mensagem:

Digite o valor binário:

onde pego este valor binário com: valor = input.nextint(); e chamo o metodo de conversçao de binário que criei.

**o problema: eu quero pegar esse valor em formato String com valor = input.nextLine();, mas quando eu faço isso o programa pula essa parte onde insiro o binário para converter e diz que o decimal é 0. Se eu por valor = input.nextInt(); ele funciona perfeitamente.

} //fim do while

Porque eu preciso usar valor = input.nextLine(); no lugar de valor = input.nextint()?

É simples, porque eu irei converter números hexadecimais e eles tem letras no meio.

Lembro que semana passada fui tentar um pequeno e simples teste para obter alguns dados com nextLine() e tive o mesmo problema até desistir, mas não pretendo desistir dessa vez, se alguém me ajudar.

Se precisar eu coloco o código do programa aqui.

Abraço.

Ponha o Codigo ai
Pra mim averiguar…

http://www.guj.com.br/posts/list/139779.java#752544

Então, segue o código anexado na mensagem.

Aparte está marcada entre /** e */ no método inicia(), se puderem me ajudar.

Bruno, eu li o que postou no outro tópico, mas desculpe minha ignorância, não entendi, não consegui fazer, tentei por …print("\r\n"); após o nextLine(); porém não deu certo, então acredito que não entendi direito.

Se puderem alterar no código ficarei grato.

Obrigado aos que tentaram me ajudar, consegui uma solução correta e duas gambiarras rsss.

bom, a maneira correta que consegui foi de um cara que me ajudou em outro forum, indicando que eu trocasse o nextLine() por next(), isso funcionou perfeitamente neste caso, mas para que tiver ou teve o mesmo problema que eu e for tentar pegar String com espaços, esse jeito já não serve, pois ele não pegou aqui o que vem após o espaço. Um outro usuário tinha me inndicado a usar o System.in.read(), como não sei como usar o mesmo ainda não posso afirmar nada sobre este.

as gambiarras que descobri foram:

objetoScanner.nextLine();
variavel = objetoScanner.nextLine();

ou então:

variavel = objetoScanner.nextLine();
variavel = objetoScanner.nextLine();

essas maneiras acima funcionam, mas não quero código “sujo” e “mal feito” (apesar do meu ainda não ser muito “bonitinho” rsss), por isso estou usando o next() que foi me passado, já que no meu caso ele serve perfeitamente.

Se alguém puder e/ou quiser falar mais sobre o System.in.read(), será de grande ajuda para mim no futuro.

Abraço