Erro com a classe Scanner

Alguém sabe o pq de não rodar um input por vez e sim os dois ao mesmo tempo? Isso me impede de inserir o primeiro item, no caso “nome”;

Print do ERRO:

Código:

package negocio;

//import repositorio.ContatoDao;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

import org.eclipse.jdt.internal.compiler.batch.Main;

import repositorio.ContatoDao;

public class ContatoTeste {

static ContatoDao dao = new ContatoDao();

/**
 * @param args
 */
public static void main(String[] args) {
	// TODO Auto-generated method stub
	Scanner input = new Scanner(System.in);
	

	
	int op;

do {
System.out.println(“1-Inserir Contato”);
System.out.println(“2-Atualizar Contato”);
System.out.println(“3-Deletar Contato”);
System.out.println(“0-Sair”);

op = input.nextInt();
if(op==1) {
	
	Contato inserircontato = new Contato();
	
	System.out.println("Informe um novo nome: \n");
	String nome = input.nextLine();
	
	System.out.println("Informe um novo email: \n");
	String email = input.nextLine();
	
	System.out.println("Informe uma nova idade: \n");
	int idade = input.nextInt();
	
	inserircontato.setNome(nome);
	inserircontato.setEmail(email);
	inserircontato.setIdade(idade);
	
	dao.inserir(inserircontato);
}else if(op==2) {
	Contato atualizarcontato = new Contato();
	System.out.println("Informe um novo nome: ");
	String nome = input.nextLine();
	
	System.out.println("Informe um novo email: ");
	String email = input.nextLine();
	
	System.out.println("Informe uma nova idade: ");
	int idade = input.nextInt();
	
	System.out.println("Informe o id referente a coluna: ");
	int id = input.nextInt();
	
	atualizarcontato.setId(id);
	atualizarcontato.setNome(nome);
	atualizarcontato.setEmail(email);
	atualizarcontato.setIdade(idade);
	
	dao.inserir(atualizarcontato);
}else if(op==3) {
			Contato excluircontato = new Contato();
	
	System.out.println("Informe o id referente a coluna: ");
	int id = input.nextInt();
	
	excluircontato.setId(id);

	
	dao.excluir(excluircontato);
}

}while(op!=0);

	//List<Contato> contatos = new ArrayList<Contato>();
	//System.out.println(contatos);
	//for (Contato i : contatos) {
         //System.out.println(i);  // imprimi o que toString() retornar
     // }
	
}

}

O nextInt() não consome a quebra de linha quando você pressiona ENTER, utilize somente o nextLine().

int variavel = Integer.parseInt( input.nextLine() );

1 curtida

Tentei assim, mas não funcionou. :confused:

Esse erro só acontece dentro do do while. Se eu por fora, ele roda direitinho…

Tenta trocar apenas o println por print:

    System.out.print("Informe um novo nome: ");
	String nome = input.nextLine();

	System.out.print("Informe um novo email: ");
	String email = input.nextLine();

Tentei, mas ainda continua :confused:

Tenta fazer um debug então, ou seguir a dedo mesmo o passo a passo, talvez o erro esteja ocorrendo desde fora do loop, ou no método construtor. Não importa se for println, print, nextLine ou Line, ele deveria executar normalmente sem nem um problema.

1 curtida

Obg pela dica amigo, vou tentar aqui :smiley:

Tem certeza de que trocou todos os input.nextInt() por Integer.parseInt(input.nextLine()), até a leitura da variável op?

1 curtida

N tinha prestado atenção neste, obg cara