Faça um "teste de mesa". Fazendo o teste de mesa, você vai ver que deve mostrar apenas uma mensagem "Cliente Cadastrado" se listaClientes.length > 0, e só aparecerá a mensagem ""Cadastro Encerrado"" se listaClientes.length == 0. Você não precisa comparar com mais alguma coisa? Não sei o que você quer fazer, na verdade.
seguinte eu to tentando criar um metodo para cadastrar Clientes e jogalos no array: Cliente listaClientes[] = new Cliente[3] porem ele vai cadastrando direto e nao da essa msg pra mim JOptionPane.showMessageDialog(null,“Cadastro Encerrado”)
public boolean cadastrarCliente(Cliente cliente){
for( int i=0 ; listaClientes.length > i ; i++){
listaClientes[i]=cliente;
JOptionPane.showMessageDialog(null,"Cliente Cadastrado");
return true;
}
JOptionPane.showMessageDialog(null,"Cadastro Encerrado");
return false;
eu quero q ele preencha enquanto o array for maior que o contador, o true e pra ele continuar a sequencia certo? quando exceder o limite do array era pra exibir essa mensagem de “Cadastro Encerrado”.
estou com uma duvida suprema, estou confundindo as coisas olha só:
desta forma esta dando pra mim cadastrar os clientes em cada posiçao correta do array mais eu nao entendo pq o contador i++ esta agindo sem uma estrutura de repetiçao
eu achava que somente assim funcionava pq com a estrutura for esta fazendo com que o contador ande no vetor pra poder cadastrar mais dessa forma esta dando erro eu cadastro um cliente apenas e aparece pra mim tres vezes direto a msg “Cliente Cadastrado” e em seguida a msg “Cadastro Encerrado”…
[code]public boolean cadastrarCliente(Cliente cliente){
for( int i=0 ; listaClientes.length > i ; i++){
listaClientes[i]=cliente;
JOptionPane.showMessageDialog(null,“Cliente Cadastrado”);
Você está utilizando FOR, ou seja, irá mostrar a mensagem de Cliente Cadastrado até que listaClientes.length > i ou melhor, até a variavel i ter o mesmo valor do que a quantidade de clientes.
Apresentou 3 vezes a mensagem Cliente Cadastrado porque a sua variavel listaClientes.length tem conteudo 3.
Sugiro que você estude do inicio! procure entender o que é if, else, for, while… antes de fazer seus programas! (Isso não é uma critica e sim uma sugestão!)
Como percebi vc nao esta familiarizado com o uso de estruturas de repetição creio que o jeito mais fácil de vc entender seria assim .
public boolean cadastrarCliente(Cliente cliente){
boolean result = false;
for( int i=0 ; listaClientes.length > i ; i++){
if(listaClientes[i] == null){
listaClientes[i]=cliente;
JOptionPane.showMessageDialog(null,"Cliente Cadastrado");
result = true;
}
}
if(result){
JOptionPane.showMessageDialog(null,"Cadastro Encerrado");
}
else{
JOptionPane.showMessageDialog(null,"Erro ao Tentar Cadastrar o Cliente");
}
return result;
}
Portanto existe maneiras melhor de se trabalhar do que usando um array , um exempro eh um ArrayList , que fica mais fácil vc nao precisa saber o tamanho e talz , lembrando o exemplo foi apenas didatico pois teria que saber qual o tamanho do vetor para poder tratar para nao dar um erro em tempo de execução .
Seu “IF” incrementa o vetor por causa da instrução “i++” contida no código do IF. Como não tem nenhuma variável “i” declarada no método, quer dizer que esse i é uma variável da classe (statica ou de objeto). Ou seja, seu objeto tem uma variável “i”, que todos os métodos enxergam, e que é usada para dizer onde está o último espaço vazio do vetor (onde deve se cadastrar o próximo).
É esse “i” que o seu IF está incrementando.
estaaa ficando mais claro agora cronoss mais o seguinte nao precisa de loop para o “i” voltar e ser incrementado nao isso q eu quero dizer, eu achava q so com loop dava pra fazer icrementaçao pq a ultima posiçao ganharia mais um com o Loop dado
devido a minha condiçao dentro do if no caso listaClientes.length > i meu i esta sendo incrementado cada vez q eu adiciono MANUAL os dados do meu cliente
se eu fosse por exemplo setar os dados automatico por exemplo nas tres posiçoes do meu array eu poderia usar um FOR
Não é questão de “usar o IF” e “usar o FOR”. A questão é COMO usar.
Da forma que você está usando o for, ele vai fazer o “i” começar em 0 (que é a posição inicial de vetores) e executar o for até o “i” equivaler a última casa do vetor.
Se você quisese listar todos os seus clientes por exemplo, acessar todas as casas do vetor seria útio, logo esse for com pequenas alterações seria útio.
Já para cadastrar UM usuário, não há necessidade de um for (a menos que por exemplo, você queira se mover por todo o vetor buscando em qual posição que ainda não tem um cliente cadastrado). Como você já guarda a posição onde se deve salvar o próximo Cliente no “i” da classe, não é necessário fazer uma busca por essa posição. Mas também não seria bom você continuar adicionando Clientes até extrapolar o tamanho do seu vetor, pois isso geraria um erro (excessão de IndexOutOfBound), por isso um “IF” verificando se a posição atual que o “i” está apontando é válida ou não foi colocado antes de tentar salvar o cliente.