Vetor

10 respostas
J

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.

import javax.swing.*;

public class whileteeste {
public static void main (String[]args){
		
			int cliente[]=new int[3];
			int op=1;
			String c="";
		int test=0;
			for(int i=0;i<3;i++){
			
			cliente[i]=Integer.parseInt(JOptionPane.showInputDialog("Digite o número da conta:"));
			test=cliente[i];
			
			
			while(op==1){
				for(int x=(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(int x=0;x<3;x++){
			c=c+cliente[x]+" ";
		}
		JOptionPane.showMessageDialog(null,c);
		
		}

		
	}

Se alguém puder dizer onde estou errando

Valeu

10 Respostas

marcos1EM

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
int []cliente = new int[3];


for (int i = 0; i < cliente.length; i++) {
     cliente[i] = Integer.parseInt(JOptionPane.showInputDialog("Digite o número da conta:"));   
    for (int j =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 = new int[3];


for (int i = 0; i < cliente.length; i++) {
     cliente[i] = Integer.parseInt(JOptionPane.showInputDialog("Digite o número da conta:"));   
    for (int j =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

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:

int cliente[] = new int[3];

        String c = "";
        int test = 0;
        for (int i = 0; i < 3; i++) {
            test = Integer.parseInt(JOptionPane.showInputDialog("Digite o número da conta:"));
            int x = 0;
            while (x < i) { // não sai do while até que digite um valor diferente dos existentes
                if (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 (int x = 0; x < 3; x++) {
            c = c + cliente[x] + " ";
        }
P

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
int[] cliente = new int[3];

        for (int i = 0; i < cliente.length; i++) {
            cliente[i] = Integer.parseInt(JOptionPane.showInputDialog("Digite o número da conta:"));

            if (i > 0){
                for (int j = 0; j < i; j ++){
                    while (cliente[i] == cliente[j]){
                       cliente[i] = Integer.parseInt(JOptionPane.showInputDialog("Digite  novamente o número da conta:"));
                    }
                }
            }
        }
J

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

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 …

Abraço!

Criado 19 de novembro de 2010
Ultima resposta 20 de nov. de 2010
Respostas 10
Participantes 4