Resolvido.
Amigos sou iniciante em java e ainda num sei quase nada. Me informaram alguns livros e também me indicaram este fórum. Por isso comprei o livro java como programar 8 edição, pena que ainda não chegou! e me cadastrei neste fórum pois acredito que aprenderei muito aqui.
Tenho uma questão pra responder e estou com algumas dúvidas para concluí-la, se alguém puder me ajudar, serei muito grato.
Uma empresa precisa criar um software de cadastro de clientes e os lugares que ele já visitouu. Consegui fazer até aqui. porém, aparecem muitos erros.
[code] public class Cliente{
private String nome, endereco;
private int cpf;
public Cliente (){
nome="";
endereco="";
cpf=0;
}
public void setNome(String snome){
nome=snome;
}
public void setEndereco(String sender){
endereco=sender;
}
public void setCpf(int icpf){
cpf=icpf;
}
public String getNome(){
return nome;
}
public String getEndereco(){
return endereco;
}
public int getCpf(){
return cpf;
}
}
++++++++++++++++++++++++++++++++++++++++++
public class Lugar{
private String nome, endereco;
public Lugar(){
nome="";
endereco="";
}
public void setNome(String snome){
nome=snome;
}
public void setEndereco(String sender){
endereco=sender;
}
public String getNome(){
return nome;
}
public String getEndereco(){
return endereco;
}
}
public class CadastraClienteLugar{
public static void main (String[] args) {
Cliente c[]=new clinte[5];
Lugar l[]=new lugar[3];
int pc=0,int pl=0;
int op=0;
while(op!=4){
op=Integer.parseInt(JOptionPane.showInputDialog("Digite a opção \n"+
"1=CADASTRA CLIENTE \n "+
"2=CADASTRA LOCAIS \n "+
"3=LISTA LOCAIS VISITADOS \n"+
"4=SAIR"));
if (op==1){
p[pc]=new Cliente();
p[pc].setNome(JOptionPane.showInputDialog("Digite o nome do cliente"));
p[pc].setEndereco(JOptionPane.showInputDialog("Digite o endereço do cliente"));
p[pc].setCpf(Integer.parseInt(JOptionPane.showInputDialog("Digite o CPF do cliente")));
}
if (op==2){
p[pl].setNome(JOptionPane.showInputDialog("Digite o nome do lugar"));
p[pl].setEndereco(JOptionPane.showInputDialog("Digite o endereço do lugar"));
}
if (op==3){
}
if (op==4)
break;
}
}[/code]
Não estou sabendo como ligar os lugares já visitados ao cliente e nem qual comando fazer para listar o cliente junto com esses lugares. E Também gostaria de saber se o que já consegui fazer está certo.
O lugar visitado(ou lugares) pode entrar como atributo do cliente.
Obrigado,
Vou tentar resolver, qualquer coisa pergunto novamente.
Mudei a classe Cliente e a Classe cadastra cliente, mas continua dando erro na cadastra cliente, se alguém puder me falar onde está o erro eu agradeço.
[code]public class Cliente{
private String nome, endereco;
private int cpf;
private Lugar lugar;
public Cliente (){
nome="";
endereco="";
cpf=0;
lugar=null;
}
public void setNome(String snome){
nome=snome;
}
public void setEndereco(String sender){
endereco=sender;
}
public void setCpf(int icpf){
cpf=icpf;
}
public String getNome(){
return nome;
}
public String getEndereco(){
return endereco;
}
public int getCpf(){
return cpf;
}
public void setLugar (Lugar slugar){
lugar=slugar;
}
public Lugar getLugar(){
return lugar;
}
public String getNomeLugarCliente(){
return lugar.getNome();
}
}[/code]
A classe cadastra cliente ficou assim:
[code]package ad2_questao2;
public class CadastraClienteLugar{
public static void main (String[] args) {
Cliente c[]=new clinte[5];
Lugar lu[]=new lugar[3];
int pc=0, int plu=0;
int op=0;
while(op!=4){
op=Integer.parseInt(JOptionPane.showInputDialog("Digite a opção \n"+
"1=CADASTRA CLIENTE \n "+
"2=CADASTRA LOCAIS VISITADOS \n "+
"3=LISTA LOCAIS VISITADOS \n"+
"4=SAIR"));
if (op==1){
p[pc]=new Cliente();
p[pc].setNome(JOptionPane.showInputDialog("Digite o nome do cliente"));
p[pc].setEndereco(JOptionPane.showInputDialog("Digite o endereço do cliente"));
p[pc].setCpf(Integer.parseInt(JOptionPane.showInputDialog("Digite o CPF do cliente")));
for(inti=0;i>3;i++){
P[plu]=new Lugar();
p[plu]=setLugar().setNome();
p[plu]=setLugar().setEndereco();
}
}
if (op==2){
p[plu].setLugar().setNome(JOptionPane.showInputDialog("Digite o nome do lugar"));
p[plu].setLugar().setEndereco(JOptionPane.showInputDialog("Digite o endereço do lugar"));
}
if (op==3){
JOptionPane.showMessageDialog(null,"Nome do Cliente: "+p[pc].getNome() \n "+"
"Locais visitados: " +p[plu].getNomeLugarClinte()+"".getLugar);
}
if (op==4)
break;
}
}
}[/code]
A classe lugar permaneceu como estava. Como falei entendo quase nada, estou estudando uns modelos diferentes e tentando adaptar, mas a tarefa é difícil, já li esta apostila umas três vezes, mas estou mais perdido que tudo.
Pelo que deu pra notar no ultimo código, você está precisando revisar um pouco os conceitos.
Essa classe CadastraClienteLugar do seu ultimo tópico certamente não está nem compilando, certo ?
Existem vários erros:
- A linguagem é case-sensitive, portanto, Cliente != cliente;
- Existem várias variáveis ali que nem foram declaradas;
- Utilizando os métodos que recebem parâmetros, mas sem passar nenhum parâmetro nele;
Aconselho você a dar uma lida melhor no seu livro de estudo, e depois voltar ao exercicio.
flws…
Boa tarde a todos.
Voce não precisa complicar tanto para implementar uma questão tão simples.
A meu ver voce só precisa ter duas classes (Cliente e Lugar) com os seus atributos. Quando foi dito pelo nosso amigo Roger75, de que o lugar poderia entrar como atributo da classe cliente, quis dizer que esse atributo poderia ser uma lista do objeto “Lugar”, isto dentro da classe Cliente, é claro.
Vamos ao que interessa.
Implemente a suas classes Cliente e Lugar assim:
// Classe Cliente
public class Cliente {
private String nome, endereco;
private Integer cpf;
private List<Lugar> lugares_visitados;
public void setNome(String nome){
this.nome = nome;
}
public void setEndereco(String endereco){
this.endereco = endereco;
}
public void setCpf(Integer cpf){
this.cpf = cpf;
}
public String getNome(){
return nome;
}
public String getEndereco(){
return endereco;
}
public Integer getCpf(){
return cpf;
}
public List<Lugar> getLugares_visitados(){
if (lugares_visitados == null) lugares_visitados = new ArrayList<Lugar>();
return lugares_visitados;
}
public void setLugares_visitados(List<Lugar> lugares_visitados){
this.lugares_visitados = lugares_visitados;
}
}
// Classe Lugar
public class Lugar {
private String nome, endereco;
public void setNome(String nome){
this.nome = nome;
}
public void setEndereco(String endereco){
this.endereco = endereco;
}
public String getNome(){
return nome;
}
public String getEndereco(){
return endereco;
}
}
Agora lá na classe principal, voce vai criar métodos específicos para os respectivos cadastros e o de listar os lugares, assim:
public class Dica_Cliente_Visita {
private static Cliente[] cli;
public static void main(String[] args) {
cli = new Cliente[5];
int op = 0;
String menu = "Digite a opção \n";
menu += "1=CADASTRA CLIENTE \n ";
menu += "2=CADASTRA LOCAIS \n ";
menu += "3=LISTA LOCAIS VISITADOS \n";
menu += "4=SAIR";
while(op != 4){
op = Integer.parseInt(JOptionPane.showInputDialog(menu));
switch (op){
case 1: cadastraCliente(); break;
case 2: cadastraLugar(); break;
case 3: listarVisitados(); break;
}
}
}
public static void cadastraCliente(){
for (int i = 0; i < 5; i++){
cli[i] = new Cliente();
cli[i].setNome(JOptionPane.showInputDialog("Digite o nome do cliente nº "+(i+1)));
cli[i].setEndereco(JOptionPane.showInputDialog("Digite o endereço do cliente nº "+(i+1)));
cli[i].setCpf(Integer.parseInt(JOptionPane.showInputDialog("Digite o CPF do cliente nº "+(i+1))));
}
}
public static void cadastraLugar(){
try {
int inc = 1;
for (int c = 0; c < 5; c++){
while (inc <= 3){
String menu = "Digite o "+inc+"º lugar \n";
menu += "que o Cliente "+getCliente(c).getNome()+" mais visita \n";
Lugar lug = new Lugar();
lug.setNome(JOptionPane.showInputDialog(menu + "Digite o nome do lugar"));
lug.setEndereco(JOptionPane.showInputDialog(menu + "Digite o endereço do lugar"));
getCliente(c).getLugares_visitados().add(lug);
inc++;
}
inc = 1;
}
} catch (NullPointerException npex){
JOptionPane.showMessageDialog(null, "Os clientes estão com valores nulos");
}
}
public static Cliente getCliente(int index){
return cli[index];
}
public static void listarVisitados(){
String print = null;
for (int c = 0; c < 5; c++){
print = "Cliente "+getCliente(c).getNome()+"\n";
print += "visita os lugares: \n";
Iterator it = getCliente(c).getLugares_visitados().iterator();
while (it.hasNext()){
Lugar lug = (Lugar)it.next();
print += " Nome: "+lug.getNome()+"\n";
print += " Endereco: "+lug.getEndereco()+"\n";
}
JOptionPane.showMessageDialog(null, print);
}
}
}
Simples não :roll: :idea:
8)
Boa Tarde a todos
Em primeiro lugar agradeço ao Discorpio e também aos demais colegas que me ajudaram a entender como fazer esta questão. Como falei sou iniciante e tenho pouco conhecimento, tinha esta questão e mais algumas pra resolver. Agora vou estudar essa e tentar resolver as outras sozinho para tentar aprender. Claro que surgindo dúvidas que não consiga solucionar vou perguntar novamente. Eu já percebi que uma das parte que estou tendo enorme dificuldade é a questão dos métodos para transferir valores de uma classe para outra. Se alguém souber de algum tutorial sobre esta questão serei grato. Como já falei comprei o livro do Deitel, mas ainda não chegou e mesmo depois, vai demorar um tempinho até conseguir entender certas coisas. mais uma vez meu muito obrigado a todos.
[quote=Kuster_01]Boa Tarde a todos
Em primeiro lugar agradeço ao Discorpio e também aos demais colegas que me ajudaram a entender como fazer esta questão. Como falei sou iniciante e tenho pouco conhecimento, tinha esta questão e mais algumas pra resolver. Agora vou estudar essa e tentar resolver as outras sozinho para tentar aprender. Claro que surgindo dúvidas que não consiga solucionar vou perguntar novamente. Eu já percebi que uma das parte que estou tendo enorme dificuldade é a questão dos métodos para transferir valores de uma classe para outra. Se alguém souber de algum tutorial sobre esta questão serei grato. Como já falei comprei o livro do Deitel, mas ainda não chegou e mesmo depois, vai demorar um tempinho até conseguir entender certas coisas. mais uma vez meu muito obrigado a todos.[/quote]
Boa tarde a todos.
De nada. Sinta-se a vontade e não se acanhe em perguntar, pois sentimos o prazer em ajudar.
Quanto ao livro, em tenho o 6ª e 8ª Edição do Deitel, e com ele voce vai aprender muita coisa, e mesmo assim, se ainda sentir dúvidas, estamos aqui para clarear aquilo que sabemos evidentemente.
Se este questão já foi resolvida, então digite “[Resolvido]” lá no início do seu Post.