quando tento usar o método .nextLine(); do Scanner ele não para no prompt, simplismente passa direito.
importjava.util.Scanner;publicclassFaturaMain{publicstaticvoidmain(Stringargs[]){FaturaminhaFatura=newFatura("[telefone removido]","Mouse Optico - Clone",2,35.25);Scannerinput=newScanner(System.in);System.out.print("Digite o numero do produto: ");Stringnum=input.next();minhaFatura.setNumber(num);System.out.println();input.reset();System.out.print("Digite a descricao do produto: ");Stringdescri=input.nextLine();minhaFatura.setDescription(descri);System.out.println();input.reset();System.out.print("Digite a quantidade do produto: ");intamou=input.nextInt();minhaFatura.setAmount(amou);System.out.println();input.reset();System.out.print("Digite o preco do produto: ");doublepric=input.nextDouble();minhaFatura.setPrice(pric);System.out.println();System.out.printf("O valor da fatura e: %.2f",minhaFatura.getValorFatura());}}
qual a solução, sem criar um novo objeto Scanner? ja tentei usar o .reset(); mas não deu. So acontece isso com o método .nextLine();.
mas pq vc quer usar o nextLine…? o next(); vai funcionar para vc receber o valor da descrição…ele não vai passar direto…
e para fazer isso não precisa “limpar” o seu Scanner… e segunda a API não existe esse método “reset()”…
Benvenuto
seguinte, o .next() pega apenas até o proximo espaço, se no caso eu digitar duas palavras ele so pega a primeira ja no nextLine() ele pega tudo. O reset() foi colocado a partir da versão 1.6. Tem outra forma?
Benvenuto
resolvi o problema, o código ficou assim:
importjava.util.Scanner;publicclassFaturaMain{publicstaticvoidmain(Stringargs[]){FaturaminhaFatura=newFatura("[telefone removido]","Mouse Optico - Clone",2,35.25);Scannerinput=newScanner(System.in);System.out.print("Digite o numero do produto: ");Stringnum=input.next();minhaFatura.setNumber(num);System.out.println();input.nextLine();System.out.print("Digite a descricao do produto: ");Stringdescri=input.nextLine();minhaFatura.setDescription(descri);System.out.println();System.out.print("Digite a quantidade do produto: ");intamou=input.nextInt();minhaFatura.setAmount(amou);System.out.println();System.out.print("Digite o preco do produto: ");doublepric=input.nextDouble();minhaFatura.setPrice(pric);System.out.println();System.out.printf("O valor da fatura e: %.2f",minhaFatura.getValorFatura());}}
alves.Felipe
po cara, foi mal.. eu vi na API da 1.5..
mas então.. fiz alguns testes aqui.. e percebi se o seu 1º next for nextInt ou nextDouble.. e o próximo for nextLine()...
vai passar direto mesmo.. mas se o 1º for um next() ou nextLine mesmo, ele vai funcionar correto..
Entendeu?? mas não sei pq ...
assim funciona:
System.out.print("Digite o numero do produto: ");Stringnum=input.nextLine();System.out.println(num);System.out.print("Digite a descricao do produto: ");Stringdescri=input.nextLine();System.out.println(descri);System.out.print("Digite a descricao do produto: ");Stringdescri1=input.nextLine();System.out.println(descri1);
e assim o 1º nextLine pula..e já no segundo fica certo esperando a entrada:
System.out.print("Digite o numero: ");intnum1=input.nextInt();System.out.println(num1);System.out.print("Digite o numero do produto: ");Stringnum=input.nextLine();System.out.println(num);System.out.print("Digite a descricao do produto: ");Stringdescri=input.nextLine();System.out.println(descri);System.out.print("Digite a descricao do produto: ");Stringdescri1=input.nextLine();System.out.println(descri1);
abraco
Benvenuto
ja resolvi sem essa gambiarra hehehe, ta la em cima a resolução