Numero de Parametros Ilimitado

7 respostas
agx

Fala povo! Blz?

Alguém conhece uma forma de se construir um método com número de parâmetros ilimitado ?

Para que possa fazer um metodo que responda a uma chamada do tipo:

int r = somaParametros(1,25,4,78,45,12,...);

algo como:

public int somaParametros(Magic PARAMETROS)
{
    int soma = 0;
    for(int i=0;i<PARAMETROS.QNTDADE;i++)
    {
        soma += parametros[i];
    }
    return soma;
}

Valeu! Qq sugestão/dica é bem vinda !!!

7 Respostas

Rafael_Steil

Com o J2SE vc consegue isso.
Com versoes anteriores, passe um array:

public void metodo(int[] params) {
    // ....
}

metodo(new in[] { 1, 2, 3 });

Rafael

pcalcado

Em java < 5, use um array de objetos, em Java 5, use varargs.

[]s

agx

Valeu o retorno Rafael e Philip.

Não teria uma forma de fazer isso sem usar array, Vector, etc ?

Quero dizer… o importante pra mim é que a chamada ao método seja feita como:

metodo(1,5,3,6,8,5,3);

ou

metodo(3,3,4,6);

ou

metodo(1);

Etc, não importando o número de parâmetros. Sacaram ?

Muito obrigado :!:

PS: será que tô pedindo muito do java? :stuck_out_tongue:

T

Não, é só seguir o que o Phillip lhe disse.
Você queria um exemplo? (Só que requer o JDK 5.0 para rodar)
Esse exemplo tem 4 coisas do JDK 5.0: varargs (que é esse “…”), foreach (esse for que tem apenas um “:”), printf (para os fanáticos pelo C/C++) e autoboxing (isso fica para você descobrir onde isso aparece no programa), tudo de uma vez só.

class Test160 {
    public int somaParametros(int... parametros) {
        int soma = 0;
        for (int par : parametros) {
            soma += par;
        }
        return soma;
    }
    public static void main(String[] args) {
        Test160 t = new Test160();
        int s = t.somaParametros (1, 2, -400, 723);
        System.out.printf ("O resultado da soma é %d", s);
    }
}
Guilherme_Silveira

thingol:

class Test160 { //... }

Ja esta no teste 160? :slight_smile:

T

É que também posto em http://forum.java.sun.com, na verdade devo ter escrito mais de 160 programinhas “hello world”, comecei a contar faz alguns meses.

agx

Valeu thingol!
Era exatamente isto que estava buscando.
Não consegui tirar proveito do link/dica que o Philip passou pq sou iniciante em java, postei esta dúvida no fórum “Avançado” pq achei que a questão em si fosse “Avançada” :wink:

Obrigado a todos pela ajuda :!:

PS: pena que aqui na faculdade não tenha Java 5 instalado… mas logo eles devem colocar, já que é a ordem natural das coisas :slight_smile:
PS: 160 programinhas “hello world” é muita coisa, cara!

Criado 9 de novembro de 2004
Ultima resposta 10 de nov. de 2004
Respostas 7
Participantes 5