Tenho um algoritimo que necessita criar contas porém não podem existir contas iguais,gostaria de saber se podem me ajudar.
Preciso da lógica , não de comandos da linguagem.
importjavax.swing.*;publicclasswhileteeste{publicstaticvoidmain(String[]args){intcliente[]=newint[3];intop=1;Stringc="";inttest=0;for(inti=0;i<3;i++){cliente[i]=Integer.parseInt(JOptionPane.showInputDialog("Digite o número da conta:"));test=cliente[i];while(op==1){for(intx=(i+1);x<3;x++){if(test==cliente[x]){cliente[i]=Integer.parseInt(JOptionPane.showInputDialog("CONTA JA CADASTRADA Digite o número da conta:"));test=cliente[i];op=1;}else{op=0;}}}}for(intx=0;x<3;x++){c=c+cliente[x]+" ";}JOptionPane.showMessageDialog(null,c);}}
Dois erros:
1 - O While só é executado uma vez porque a variável op não recebe o valor 1 novamente, caso não haja registro duplicado.
2 - O Vetor não é percorrido desde o início
Sugiro que tente melhorar esse código, esse problema pode muito bem ser resolvido sem a utilização do while, pesquise sobre o comando break, ele pode ser usado para interromper a execução de um laço de repetição, evitando assim o uso de variavés como o caso da op.
P
Pedro_GTI
int[]cliente=newint[3];for(inti=0;i<cliente.length;i++){cliente[i]=Integer.parseInt(JOptionPane.showInputDialog("Digite o número da conta:"));for(intj=0;j<cliente.length;j++){if(cliente[i]==cliente[j]){cliente[i]=Integer.parseInt(JOptionPane.showInputDialog("Numero da conta ja existe digite novamente:"));}}}
marcos1EM
Pedro_GTI:
int[]cliente=newint[3];for(inti=0;i<cliente.length;i++){cliente[i]=Integer.parseInt(JOptionPane.showInputDialog("Digite o número da conta:"));for(intj=0;j<cliente.length;j++){if(cliente[i]==cliente[j]){cliente[i]=Integer.parseInt(JOptionPane.showInputDialog("Numero da conta ja existe digite novamente:"));}}}
Testou esse código? Ele também contém erro de lógica
J
johcri2
sim este código tem um erro
pois a primeira entrada esta sendo logo comparada com ela mesma ou seja
esta encontrando o que voce acabou de digitar e respondendo que já existe
por isso antes eu havia colocado para começar da posição 1 porém neste caso quando for rodar a posição 1 ele naoirá comparar com a posição 0
não consigo achar a lógica
tenho que declarar o numero a ser digitado em uma variavel e compara-la com o vetor.
caso nao exista esta variavel dentro do vetor ela é inserida na posição
não seiii nao consigoo me ajudemm heheheeh
marcos1EM
Existe várias formas, veja se entendeu a lógica desta:
intcliente[]=newint[3];Stringc="";inttest=0;for(inti=0;i<3;i++){test=Integer.parseInt(JOptionPane.showInputDialog("Digite o número da conta:"));intx=0;while(x<i){//nãosaidowhileatéquedigiteumvalordiferentedosexistentesif(test==cliente[x]){test=Integer.parseInt(JOptionPane.showInputDialog("CONTA JA CADASTRADA Digite o número da conta:"));x=0;}else{x++;}}cliente[i]=test;}for(intx=0;x<3;x++){c=c+cliente[x]+" ";}
P
Pedro_GTI
Opa … nem testei nao… so botei mais o menos a logica… mas se quiser que eu faça um pronto aqui eu faço
P
Pedro_GTI
int[]cliente=newint[3];for(inti=0;i<cliente.length;i++){cliente[i]=Integer.parseInt(JOptionPane.showInputDialog("Digite o número da conta:"));if(i>0){for(intj=0;j<i;j++){while(cliente[i]==cliente[j]){cliente[i]=Integer.parseInt(JOptionPane.showInputDialog("Digite novamente o número da conta:"));}}}}
J
johcri2
MUITOO OBRIGADO
eu estava precisando muito dessa logica hehe valeu abraçp
ViniGodoy
Na próxima vez, deixe seu título de tópico sem letras maiúsculas, e sem expressões do tipo “AJUDA POR FAVOR”, “URGENTE”, “SOCORRO”, etc.
P
Pedro_GTI
Por nada… mas nao busque as coisas prontas… tente pensar… quebrar a cabeça, fazer teste de mesa no papel e se nao tiver outro jeito poste no forum nos tentamos ajudar …