packagelucas;publicclassQuestaoGuj{publicvoidgravar(){Stringcodigo=null,nome=null,cidade=null;if(codigo.equals("")){codigo=buscacodigo();}if(nome.equals("")){nome=buscanome();}if(cidade.equals("")){cidade=buscacidade();}gravacao(codigo,nome,cidade);}privateStringbuscanome(){// abre a tela de busca de imovelreturnnull;}privateStringbuscacidade(){// Abre tela de busca de cidadereturnnull;}privateStringbuscacodigo(){// abre tela de busca de codigoreturnnull;}publicstaticvoidgravacao(Stringcodigo,Stringnome,Stringcidade){System.out.println("Gravação realizada com sucesso");}}
Pessoal o seguinte problema ao chamar o método gravar(), como faço para executar cada método um por cada vez pois cada um irá abrir uma tela de busca o método gravação pode se executado somete ao chamar os dois acima como faço isso?
Para ir testando coloque retornos não nulos nos metodos. Ex, return “Codigo”; return = “Cidade”;
Não entendi bem esssa logica ai. Vc quer fazer uma tela de buscas para cada metodo desses?
Dica: Tente fazer um metodo funcionar primeiro, ou seja, o que você pretende fazer nao é uma busca? Primeiro isso, depois você vai busca de outras coisas, mas só quando souber fazer de um item primeiro. Sabe como fazer buscas num vetor? ArrayList?
E para executar um metodo por vez voce usa o switch case com um menu de opções
L
Lucas_Mic
E isso mesmo eu quero criar uma metodo que chame varios dentro dele mas como os outroas estão em sequencia chama todos de uma vez sobre o retorno entendi
Agora como fazer a busca em um vetor não entendi tem como colocar as busca em um vetor você pode dar um exemplo ?
J
Jonas_B_a_r_r_o_s
Não é que estão todos em sequencia, que por esse motivo são chamados. A ordem como estão organizados dentro da classe não influencia a ordem em que são executados.
Eles estão sendo executados por causa da verificação que você está fazendo. E para String você usa como valor padrão o vazio " “, ao inves de null. Então, você verifica if ((codigo,equals(”)), oras, ele sempre será vazio, porque você o está declarando como vazio dentro do proprio metodo gravar(), e assim para os demais atributos, estão todos vazio, porque estão sendo iniciados como vazios. If codigo equals “” execute o metodo, if cidade equals “” execute o metetodo.
Não sei o que você pretende fazer. Melhor você esboçar o problema em questão
publicvoidgravar(){buscacidade();buscacodigo();buscanome();gravacao(codigo,nome,cidade);}privatestaticvoidbuscanome(){}privateStringbuscacidade(){// Abre tela de busca de cidade//Mandando como parametro String bus_cidade que ao selecionar irá retornar o codigo da cidade// Após selecionar irá retornar pelo método retorno trazendo o parametro e o campo carregado// só após chegar o codigo da cidade que poderá trazer carregar a outra busca assim sucessivamente // assim ao carregar o busca nome e tiver com o retorno carregado com o nome assim poderá fazer a gravaçãoreturnnull;}privateStringbuscacodigo(){// abre tela de busca de codigoreturnnull;}publicstaticvoidgravacao(Stringcodigo,Stringnome,Stringcidade){System.out.println("Gravação realizada com sucesso");}publicstaticvoidretorno(Stringtipo,Stringcampo){if(tipo.equals("bus_nome")){nome=campo;}if(tipo.equals("bus_cidade")){cidade=campo;}if(tipo.equals("bus_codigo")){codigo=campo;}}
}`
J
Jonas_B_a_r_r_o_s
Você pode dizer oq eu você quer fazer?
L
Lucas_Mic
busca quero abrir uma tela de busca de informação
J
Jonas_B_a_r_r_o_s
Pois, pelo codigo você pode buscar todas as informações de um objeto Cidade. Não precisa, toda essa confusão de nome, cidade, codigo. Crie uma classe Cidade. Coloque dentro de um array os objetos
L
Lucas_Mic
pensa uma ficha de orçamento
tem o nome do cliente
e a cidade de entregar
ao gravar a pessoa colocou os itens mas não colocou as duas informações
então deve abri a busca de nome de cliente
depois a cidade de entrega
pois a cidade de entrega não é a mesma da cidade do cliente
após estes campos completos ai sim pode fazer a gravação;
detalhe não quero chamar o método gravar de novo quero executar ele uma vez e fazer a gravação
J
Jonas_B_a_r_r_o_s
Então você vai precisar fazer isso orientado a objetos. Crie classes, Cliente com atributos nome, cidade, codigo. Depois crie uma classe Entrega com os atributos, codigo, cidade, e outras informações que convêm.
Neste caso, você vai precisar o conceito de composição. Onde Cliente POSSUI uma Entrega
Você tem que trabalhar com classes, senão estará programando de forma procedural. Para guardar as informações em objetos.
E no caso, que tela seria essa? Se for de forma grafica, usando Swing, existem N formas de você fazer com que o usuario digite as informações de entrega sem que ele tenha que esquecer de informar as informações de entrega
L
Lucas_Mic
Existe inumeras formas de bloquear mas eu queria saber se tem como fazer isso na gravação caso tenha passado em branco e sim fazer a gravação abrindo uma tela de busca
J
Jonas_B_a_r_r_o_s
Você já programa para não passar em branco. Se você fizer um programa para alguma empresa, e os funcionarios sempre esquecerem de adicionar a cidade de entrega do cliente?
J
Jonas_B_a_r_r_o_s
E no Java existe algumas coisas já pensando nisso. Como ja disse, existe a composição.
Você cria uma classe Cliente, nessa terá o atributo do tipo Entrega
Assim, sempre que você instanciar Cliente, ele vai pedir um objeto Entrega.
L
Lucas_Mic
pode ser feito mas por exemplo não posso obrigar a gravar pois a gravação de cliente e feito em um outro local como a cidade de entrega outra pessoa que não tenha acesso então para gravar se gera o orçamento pega o nome os dados do cliente e passa para outra pessoa finalizar a venda
nesse finalizar pode se esquecer o código do cliente e da cidade de entrega
o que poderia ser feito fazer dar um retorno e voltar para o código do cliente falando campo obrigatório ai o usuário teria que clicar e gravar novamente, caso pulo a cidade de entrega teria que fazer o mesmo processo isso eu gostaria de pular
J
Jonas_B_a_r_r_o_s
Então, voce cria um construtor de Cliente com o objeto entrega, e cria outro vazio. Dois construtores.
publicCliente(Entregaentrega){this.entrega=entrega;}// e outro vaziopublicCliente(){}
Pode ser que o cliente que esteja fazendo o orçamento/comprando, seja o mesmo que irá passar o seu endereço. Caso contrario, você vai poder criar uma instancia de Cliente sem passar a entrega. E sim, o ID da venda tem que estar ligado ao ID do cliente, mesmo que a entrega tenha sito feita em outro endereço. Por isso a importancia de você associar cliente a entrega
J
Jonas_B_a_r_r_o_s
Não entendi, sobre outra pessoa que não tenha acesso.
Você ta querendo criar um sistema bem complexo ainda pro seu nivel de conheciemnto, so acho
L
Lucas_Mic
Sistema tem niveis (Tipo de acesso) onde se pode acessar certas coisa ou não, sendo cada um bloquado,então este tipo de usuário não poderá cadastrar por isso que precisaria fazer isso, mas caso não tenha como vou ter que dar outro jeito.