Estou com uma dúvida básica sobre o famoso Scanner... Tenho este código abaixo e não estou sabendo como usar o Scanner para ler as entradas dos dados (nome do cliente, endereço,... etc).
importjava.util.Scanner;publicclassTeste{publicstaticvoidmain(String[]args){Contac;Clientecl;Scannerentrada=newScanner(System.in);System.out.print("Informe o nome do Cliente: ");?????????????????????????????????????}
importjava.util.Scanner;publicclassTeste{publicstaticvoidmain(String[]args){Contac;Clientecl;Scannerentrada=newScanner(System.in);System.out.print("Informe o nome do Cliente: ");StringnomeCliente=input.nextLine();//int numero = input.nextInt(); // quando vc quiser pegar um inteiro//double numero = input.nextDouble(); // quando vc quiser pegar um numero com ponto flutuante//.... e assim por diante}}
M
Mariachi
Lavieri:
importjava.util.Scanner;publicclassTeste{publicstaticvoidmain(String[]args){Contac;Clientecl;Scannerentrada=newScanner(System.in);System.out.print("Informe o nome do Cliente: ");StringnomeCliente=input.nextLine();//int numero = input.nextInt(); // quando vc quiser pegar um inteiro//double numero = input.nextDouble(); // quando vc quiser pegar um numero com ponto flutuante//.... e assim por diante}}
Opa, vlw irmão!
Consegui entrar com os dados. Agora, me tira outra dúvida, os dados que estão entrando estão sendo associados aos atributos da classe cliente? Não teria que dar um "new" para instanciar o objeto do tipo Cliente "cl" que eu declarei?
Lavieri
Mariachi:
Opa, vlw irmão!
Consegui entrar com os dados. Agora, me tira outra dúvida, os dados que estão entrando estão sendo associados aos atributos da classe cliente? Não teria que dar um "new" para instanciar o objeto do tipo Cliente "cl" que eu declarei?
O ideal é vc pegar os dados do teclado, e depois criar a classe... porem tem formas de criar a classe diretamente... algo assim
importjava.util.Scanner;publicclassTeste{publicstaticvoidmain(String[]args){Contac;Clientecl;Scannerentrada=newScanner(System.in);//Ai ele vai fazer um input para cada entrada do cliente e criar o cliente e por em CL//Veja o método getInput(String title,Scanner entrada) que esta logo abaixo.cl=newCliente(getInput("Informe o nome do Cliente: ",entrada),getInput("Informe o endereco do Cliente: ",entrada),getInput("Informe o telefone do Cliente: ",entrada),getInput("Informe o cpf do Cliente: ",entrada));}privatestaticStringgetInput(Stringtitle,Scannerentrada){System.out.print(title);returnentrada.nextLine();}}
Lavieri
apenas refazendo o código acima, pra ficar 1 pouco melhor...
importjava.util.Scanner;publicclassTeste{privatestaticScannerscanner;privatestaticfinalStringNOME="Informe o nome do Cliente: ";privatestaticfinalStringENDERECO="Informe o endereco do Cliente: ";privatestaticfinalStringTELEFONE="Informe o telefone do Cliente: ";privatestaticfinalStringCPF="Informe o cpf do Cliente: ";privatestaticvoidensureScannerIsClosed(){if(scanner!=null){scanner.close();scanner=null;}}privatestaticvoidensureScannerIsOpen(){if(scanner==null)scanner=newScanner(System.in);}privatestaticScannergetScanner(){ensureScannerIsOpen();returnscanner;}privatestaticStringgetInput(Stringtitle){System.out.print(title);returngetScanner().nextLine();}publicstaticvoidmain(String[]args){Contac;Clientecl;cl=newCliente(getInput(NOME),getInput(ENDERECO),getInput(TELEFONE),getInput(CPF));ensureScannerIsClosed();}}
apesar do código ser + longo é bem + legivel
M
Mariachi
Obrigado cara! O cóidigo ficou mais legível sim, só ficou faltando STRING ali depois dos “FINAL”.
Lavieri
heheh verdade =x … é que digitei aki mesmo no GUJ, sem passar por uma IDE, ai agente sempre eskece alguma coisa =x
Edit.: uma outra coisa que pensei, caso tenha interesse
private static String[] getInputs(String ... titles) {
String[] result = new String[title.length];
for (int i = 0; i<titles.length;i++)
result[i] = getInput(titles[i]);
return result;
}
esse é pra pegar varios inputs em uma array de String passando os titulos… o modo de usar seria
String[] inputs = getInputs(NOME,ENDERECO,TELEFONE,CPF);
cl = new Cliente(inputs[0],inputs[1],inputs[2],inputs[3]);