nextInt () depois nextLine () dá problemas.

790 views
Skip to first unread message

Thiago Araújo

unread,
Mar 6, 2012, 7:35:43 PM3/6/12
to jav...@googlegroups.com

Oi pessoal, 
eu sou novo neste mundo Java, e não consegui descobrir esse problema. Depois que eu usar nextInt ou nextDouble, e tentar usar nextLine, não funciona. Qual é o problema existe, e qual seria a maneira certa de lidar com isso? código para ilustrar um exemplo simples que possam entender.

import java.util.Scanner;

public class Aluno {
public static void main(String args []) {
Scanner entrada = new Scanner(System.in);
Estudante Aluno1 = new Estudante();
System.out.println("Informe a Matricula: ");
Aluno1.setMatricula(entrada.nextInt());
               
               System.out.println("Informe o Nome: ");
Aluno1.setNome(entrada.nextLine());
System.out.println("Informe o Sexo: ");
Aluno1.setSexo(entrada.next().charAt(0));

Aluno1.exibir();
}
}

Agradecido!

Berg Oliveira

unread,
Mar 6, 2012, 7:59:32 PM3/6/12
to jav...@googlegroups.com
Mas qual o erro mesmo!?

--
Você está recebendo esta mensagem porque se inscreveu no grupo "java.ce" dos Grupos do Google.
Para postar neste grupo, envie um e-mail para jav...@googlegroups.com.
Para cancelar a inscrição nesse grupo, envie um e-mail para javace+un...@googlegroups.com.
Para obter mais opções, visite esse grupo em http://groups.google.com/group/javace?hl=pt-BR.



--
Berg Oliveira
----------------------
Análise e Desenvolvimento de Sistemas 
IFPB, Campus Cajazeiras.
----------------------

Thiago Araújo

unread,
Mar 6, 2012, 8:03:31 PM3/6/12
to jav...@googlegroups.com
ele pula a linha do nome não deixa você entrar com o dado e vai logo pra do sexo

magno alessandro

unread,
Mar 6, 2012, 8:11:03 PM3/6/12
to jav...@googlegroups.com
Grande... Muda o  entrada.nextLine()  para  entrada.next(). Que deve funcionar... Abs.
Magno Alessandro de Paula
http://www.linkedin.com/pub/magno-alessandro-pmp/12/246/b13

Thiago Araújo

unread,
Mar 6, 2012, 8:23:56 PM3/6/12
to jav...@googlegroups.com
Funcionaria se eu necessitasse  que ele pegasse apenas um palavra..

Victor Barcellos

unread,
Mar 6, 2012, 7:43:11 PM3/6/12
to jav...@googlegroups.com
Experimenta instanciar outro objeto Scanner e utilizá-lo apenas para strings!


Em 6 de março de 2012 21:35, Thiago Araújo <thia...@gmail.com> escreveu:

--
Você está recebendo esta mensagem porque se inscreveu no grupo "java.ce" dos Grupos do Google.
Para postar neste grupo, envie um e-mail para jav...@googlegroups.com.
Para cancelar a inscrição nesse grupo, envie um e-mail para javace+un...@googlegroups.com.
Para obter mais opções, visite esse grupo em http://groups.google.com/group/javace?hl=pt-BR.



--

Atenciosamente,

Victor Barcellos
Graduando em Telemática - IFCE
Fone.:(85)8802-7411 / (85)9623-8783

Fabrício Cabral

unread,
Mar 6, 2012, 9:12:49 PM3/6/12
to jav...@googlegroups.com
Thiago,

experimenta assim:

sempre faça um nextLine() para qualquer valor. Se o valor
que você deseja ler é um int, faça: Integer.parseInt(entrada.nextLine()).

A razão de não dar certo, se eu não me engano, é que quando você
faz o nextInt(), o "enter" que você digitou acaba caindo no nextLine()
o que faz ele pensar que você digitou um valor (mas vai estar em
branco).

Mas, como eu disse, estou na base do achismo. O pessoal da lista
é muito mais gabaritado do que eu pra responder esta... :)

[]'s

2012/3/6 Thiago Araújo <thia...@gmail.com>



--
--fx

Berg Oliveira

unread,
Mar 6, 2012, 9:26:08 PM3/6/12
to jav...@googlegroups.com
Do jeito que o Fabrício postou:

System.out.println("Informe a Matricula: ");
aluno1.setMatricula(Integer.valueOf(entrada.nextLine()));
System.out.println("Informe o Nome: ");
aluno1.setNome(String.valueOf(entrada.nextLine()));
System.out.println("Informe o Sexo: ");
aluno1.setSexo(Character.valueOf((entrada.nextLine().charAt(0))));
aluno1.exibe();

Thiago Araújo

unread,
Mar 7, 2012, 5:06:37 AM3/7/12
to jav...@googlegroups.com
Bom dia pessoal,

realmente pesquisando sobre o assunto li em um fórum o mesmo que o Fabricio falou, 
agora então pude entender oque estava acontecendo, agradeço a todos pela ajuda!

[]'s

Hewerson Freitas

unread,
Mar 7, 2012, 6:31:02 AM3/7/12
to jav...@googlegroups.com
Ok, Thiago eu dei esta solução do cast da linha para inteiro.

Hewerson Freitas

unread,
Mar 7, 2012, 6:35:11 AM3/7/12
to jav...@googlegroups.com
package Alunos;

import java.util.Scanner;

public class Aluno {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub

        Scanner entrada = new Scanner(System.in);
        Estudante Aluno1 = new Estudante();
        
        System.out.println("Informe a Matricula: ");
        Aluno1.setMatricula(Integer.parseInt(entrada.nexLine()));

Thiago Araújo

unread,
Mar 7, 2012, 7:50:19 AM3/7/12
to jav...@googlegroups.com
Certo resolve o problema, mais eu queria o motivo pelo qual ocorre isso...
hehehe

Reply all
Reply to author
Forward
0 new messages