Uso do Scanner?

Olá a todos!

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).

Quem puder ajudar agradeço!

[code]public class Conta {

private String numero;
private double saldo;

public Conta (String numConta, double saldoInicial){
	numero = numConta;
	saldo = saldoInicial;
}
public double getSaldo(){
	if (saldo < 0){
		saldo = 0;
		System.out.println("Saldo Insuficiente!");
	}
	return saldo;
}
public void Creditar(double valor){
            	saldo = saldo + valor;
}
	public String getNumero(){
		return numero;
	}
	public void Debitar(double valor){
		saldo = saldo - valor;
	}

}[/code]

[code]public class Cliente {

private String nome;
private String endereco;
private String telefone;
private String cpf;

public Cliente(String nome, String endereco, String telefone, String cpf){
	
	this.nome = nome;
	this.endereco = endereco;
	this.telefone = telefone;
	this.cpf = cpf;
}

public String getNome() {
	return nome;
}

public void setNome(String nome) {
	this.nome = nome;
}

public String getEndereco() {
	return endereco;
}

public void setEndereco(String endereco) {
	this.endereco = endereco;
}

public String getTelefone() {
	return telefone;
}

public void setTelefone(String telefone) {
	this.telefone = telefone;
}

public String getCpf() {
	return cpf;
}

public void setCpf(String cpf) {
	this.cpf = cpf;
}

}
[/code]

[code]import java.util.Scanner;

public class Teste {

public static void main(String []args){

	Conta c;
	Cliente cl;
	Scanner entrada = new Scanner(System.in);
	System.out.print("Informe o nome do Cliente: ");
	?????????????????????????????????????
	
}[/code]

[code]import java.util.Scanner;

public class Teste {

public static void main(String []args){

	Conta c;
	Cliente cl;
	Scanner entrada = new Scanner(System.in);
	System.out.print("Informe o nome do Cliente: ");
	String nomeCliente = 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
}

}[/code]

[quote=Lavieri][code]import java.util.Scanner;

public class Teste {

public static void main(String []args){

	Conta c;
	Cliente cl;
	Scanner entrada = new Scanner(System.in);
	System.out.print("Informe o nome do Cliente: ");
	String nomeCliente = 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
}

}[/code]

[/quote]

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?

[quote=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?[/quote]

O ideal é vc pegar os dados do teclado, e depois criar a classe… porem tem formas de criar a classe diretamente… algo assim

[code]import java.util.Scanner;

public class Teste {

public static void main(String []args){

	Conta c;
	Cliente cl;
	Scanner entrada = new Scanner(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 = new Cliente(
				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)
		);

}
private static String getInput(String title,Scanner entrada) {
	System.out.print(title);
	return entrada.nextLine();  
}

}[/code]

apenas refazendo o código acima, pra ficar 1 pouco melhor…

[code]import java.util.Scanner;

public class Teste {

private static Scanner scanner;
private static final String NOME = "Informe o nome do Cliente: ";
private static final String ENDERECO = "Informe o endereco do Cliente: ";
private static final String TELEFONE = "Informe o telefone do Cliente: ";
private static final String CPF = "Informe o cpf do Cliente: ";

private static void ensureScannerIsClosed() {
	if (scanner != null) {
		scanner.close();
		scanner = null;
	}
}
private static void ensureScannerIsOpen() {
	if (scanner == null)
		scanner = new Scanner(System.in);
}
private static Scanner getScanner() {
	ensureScannerIsOpen();
	return scanner;
}
private static String getInput(String title) {
	System.out.print(title);
	return getScanner().nextLine();  
}

public static void main(String []args){
	Conta c;
	Cliente cl;
	cl = new Cliente(getInput(NOME), getInput(ENDERECO), getInput(TELEFONE), getInput(CPF));
	ensureScannerIsClosed();
}

}[/code]

apesar do código ser + longo é bem + legivel

Obrigado cara! O cóidigo ficou mais legível sim, só ficou faltando STRING ali depois dos “FINAL”.

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]);