Se eu colocar o nextLine quando estiver recebendo a entrada 3, ele não recebe a entrada 3 e mostra as duas primeiras, agora se estiver NEXT nos 3, ou nextLine nos três, o programa recebe as 3 corretamente.
Minha pergunta é a seguinte: Alguém poderia me explicar a diferença entre os comandos o nextLine e o next?
Quando vc usa next vc guarda string de sem espaço, já com nextLine vc pega as strings com espaço e só pára a leitura quando o enter for pressionado.
Mas o nextLine apresenta alguns problemas, as vezes ele pula as entradas seguintes. Já postei uma duvida dessa aqui no GUJ, me falaram q é por causa do enter, q as leituras posteriores irão ler.
Eu estava com este problema ai enquanto não os testes do programa eram feitos por linha de comando usei um nextLine atras do outro:
System.out.println("Entre com o nome completo: ");
nome = input.nextLine();
nome = input.nextLine();
Pelo menos para a etapa de testes funcionou, ai depois que foi implementada a interface da aplicação retirei tudin.
E como você fez depois que retirou para continuar lendo os dados?
Pelo que eu entendi, se eu quiser que o usuário digite o nome dele completo, eu teria que usar o nextline por que ele capta os espaços. Caso eu tivesse capturando o nome com next, a variável que guarda o nome só capturaria o primeiro nome, é isso?
Isso…
Se vc estiver usando o next vc irá capturar o primeiro nome de entrada.
Eu tirei, mas a entrada agora era atraves de um JtextField =)
Não precisando mais da classe Scanner.
Mas na sua aplicação os dados serão inseridos atraves de linha de comando né?
Ai é complicado, pq repetir o nextLine duas vezes pode ser comparado como uma gambiarra.
Teria q arrumar outro jeito… dá uma pesquisadinha no forum, pois vc não foi o primeiro e nem será o último a ter essa duvida com a classe Scanner.
Não sei se te serve mais tu pode usar JoptionPane:
public class Teste {
public Teste() {
String nome = JOptionPane.showInputDialog("Digite o seu nome");
String idade = JOptionPane.showInputDialog("Digite a sua idade");
int idadeFutura = Integer.parseInt(idade) + 5;
String msg = nome + ", daqui a cinco anos vc terá: " + idadeFutura + " anos!";
System.out.println(msg);
JOptionPane.showMessageDialog(null, msg);
}
public static void main(String[] args) {
new Teste();
}
}
Obrigado pessoal! com a interface gráfica eu já havia conseguido. Pelo que estou observado, é melhor abandonar essa classe scanner e ficar na gráfica e depois que eu estiver mais avançado, e fazendo interfaces com o usuário, usar o jtextfield.