Ir ao conteúdo

Posts recomendados

Postado

Boa tarde, tudo bem?

 

Como faço para passar um vetor de objetos como paramentro em java?

 

public class Banco {
    public static void main(String[] args) {
        Conta [] conta = new Conta[3];
        for(int i =0; i<3;i++){
            conta[i]=new Conta();
            conta[i].cadastrar(conta);
        }
    }  
}

-----
  
  public boolean validarCpf(int cpf, Conta conta){
        int cpf2=cpf;
        for(int i=0;i<=conta.length;i++){
            if(cpf2 == conta[i]){
                System.out.println("Esse CPF já está cadastrado");
                return false;
            }
        }
        
        return true;
    }



public void cadastrar(Conta conta[]){
        Scanner entrada = new Scanner(System.in);
        System.out.println("Informe seu CPF: ");
        this.cpf = entrada.nextInt();
        
        for(int i=0; i<=conta.lenght;i++){
            validarCpf(getCpf(), conta[i]);
        }
        if(validarCpf(getCpf(), conta[0])==false){  /// TALVEZ TENHA QUE SER O this.cpf
            System.out.println("Cpf já cadastrado!");
        }
        else{
            System.out.println("Informe seu nome: ");
            this.nomeDono = entrada.next();   
        }
    }

 

Minha dificuldade é que em java eu passava como ponteiro essas estruturas, mas em java não existe isso (ao menos até hoje não vi).

Alguem sabe como proceder?

(em pensei que passando a posição inicial do vetor , conta[0], funcionaria. Mas tambem não dar certo)

 

  • Curtir 1
Postado

Segue um exemplo funcional:

public class Principal {
    public static void main(String[] args){
        String[] palavras = new String[5];
        palavras[0] = "AAA";
        palavras[1] = "BBB";
        palavras[2] = "CCC";
        palavras[3] = "DDD";
        palavras[4] = "EEE";

        funcao(palavras);
    }

    public static void funcao(String[] vetor){
        for(String palavra : vetor) {
            System.out.println(palavra);
        }
    }
}

 

  • Curtir 1
  • Obrigado 1
Postado

@AdrianoSiqueira Brigadão

 

consegui depois de um tempo. So que estava a tentar passar um vetor de objetos.... (vetor de classes para mim kkk)

 

Tinha uma classe chamada Conta. Ai acabei passando da seguinte forma:

 

public boolean validarCpf(int cpf, Conta[] conta){
        
        for(int i=0;i<=3;i++){
            if(cpf==conta[i].getCpf()){
                System.out.println("Esse CPF já está cadastrado");
                return true;
            }
        }
        return false;
    }

 

Postado

Recomendo pegar o tamanho do vetor para definir o limite do for:

for(int i = 0; i <= conta.length; i++){
    if(cpf == conta[i].getCpf()) {
        System.out.println("Esse CPF já está cadastrado");
        return true;
    }
}

Ou então como você não está alterando valores, poderia usar o foreach:

for(Conta c : conta) {
    if(cpf == conta.getCpf()) {
        System.out.println("Esse CPF já está cadastrado");
        return true;
    }
}

Já ouvi dizer que o foreach é mais otimizado para percorrer coleções, porém não serve caso você precise modificar algo no vetor.

 

Recomendo também declarar o cpf como uma String, já que dificilmente você irá efetuar uma operação matemática com esses números, além de que como uma String, você pode armazenar o valor já com a máscara (###.###.###/##).

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...