Oi galera, tô com um probleminha chato, mas lá vai: Em um momento no meu código preciso das informações passados pelo usuário. Segue o código:
System.out.println("- inserir contato...");
System.out.print("Nome: ");
c.setNome(input.nextLine());
System.out.print("Telefone: ");
c.setTelefone(input.nextInt());
System.out.print("e-mail: ");
c.setEmail(input.nextLine());
System.out.print("Data Nasc.: ");
c.setDataNasc(df.parse(input.nextLine()));
Quando eu executo o programa, ele não deixa eu entrar com o nome e pula para o telefone e se eu tento digitar o nome ele lança uma exceção do tipo InputMismatchException.
- inserir contato...
Nome: Telefone:
Como devo fazer para que eu consiga entrar com todos os dados corretamente?
Obrigado pela atenção!!
Em vez de nextLine() tenta usar next().
[]'s
Posta o código relativo á inicialização de um objecto da classe Scanner.
Olá RoDnEy_PeReIrA,
vai aqui outro modo de ler dados do teclado:
import java.io.IOException;
import java.io.DataInputStream;
public class LeTeclado{
public static void main(String []args){
String linha = "";
DataInputStream mdis = new DataInputStream(System.in);
System.out.print("Digite algo: ");
try{
linha = mdis.readLine();
System.out.println("Voce digitou: " +linha);
}
catch(IOException ioe){
ioe.printStackTrace();
}
}
}
O Scanner com certeza é mais prático, mas vale saber outras formas de ler dados do dispositivo padrão (teclado).
Abraço!
Valeu galera! A solução do TRICOLACO resolveu meu problema. Eu pensei já ter colocado este método, mas pelo visto não.
Mas, aproveitando qual é a diferença entre next() e nextLine(), pq não entendi muito bem??
Valeu gente!!
Olá RoDnEy_PeReIrA,
se desejar ir na fonte mais correta: http://java.sun.com/j2se/1.5.0/docs/api/ procure pela Classe Scanner.
De maneira prática:
import java.util.Scanner;
public class Teste{
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
String str = "";
System.out.print("Nome: ");
str = s.next();
System.out.println(">str: " +str);
System.out.print("Nome: ");
str = s.next();
System.out.println(">str: " +str);
System.out.print("Nome: ");
str = s.next();
System.out.println(">str: " +str);
}
}
:arrow: nextLine(): lê a linha inteira sem se preocupar com os espaços.
Saida nextLine():
Nome: uma frase qualquer para teste
>str: uma frase qualquer para teste
Nome: outra frase qualquer para teste
>str: outra frase qualquer para teste
Nome: mais uma frase qualquer para teste
>str: mais uma frase qualquer para teste
:arrow: next(): lê um token(uma) até encontrar um espaço em branco, a próxima chamada do método recebe o próximo token(frase) após o espaço em branco e assim por diante. É por isso que o resultado fica “quebrado”.
Saída do next():
Nome: uma frase qualquer
>str: uma
Nome: >str: frase
Nome: >str: qualquer
Espero ter ajudado.
Abraços!
Valeu serjaumfantin, agora fico bastante claro!! Valeu!!