[java] méthode qui retourne plusieurs valeurs [Fermé]

Signaler
-
Messages postés
8
Date d'inscription
mardi 20 novembre 2012
Statut
Membre
Dernière intervention
15 mai 2013
-
Bonjour,
est-ce-qu'il est possible qu'une méthode java retourne plusieurs valeurs (du meme type) ?
J'ai essayé ça mais ça ne marche pas:

int 1;
int 2;

 public int touche() {
...
return 1;
return 2;
}


merci de vos réponses

2 réponses

Messages postés
16358
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
7 juin 2021
2 842
Pas de cette manière, mais il est possible d'utiliser des objets qui contiennent plusieurs valeurs, des tableaux par exemple.

Attention : 1 et 2 ne peuvent pas être utilisés comme noms de variables, il faut que ça commence par une lettre.

int i1;
int i2;

public int[] touche()
{
    // ...
    int[] resultat = {i1, i2};
    return resultat;
}
2
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

ok merci j'essaie ça
et ensuite je peux utiliser i1, i2 sans autre ou je dois les sortir de resultat ?
Messages postés
16358
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
7 juin 2021
2 842
Ici i1 et i2 sont encore accessibles mais leurs valeurs auront peut-être changées entre-temps, il vaut mieux sortir les valeurs du tableaux (qui ne s'appellera plus resultat)

public class Test
{
    int i1 = 1;
    int i2 = 2;

    public int[] touche()
    {
        i1 = 10;
        i2 = 20;
        int[] resultat = {i1, i2};
        i1 = 100;
        i2 = 200;
        return resultat;
    }

    public static void main(String[] args)
    {
        System.out.println(i1); // 1
        System.out.println(i2); // 2
        
        int[] tableau = touche();
        
        System.out.println(i1); // 100
        System.out.println(i2); // 200
        
        System.out.println(tableau[1]); // 10
        System.out.println(tableau[2]); // 20
    }
}
Messages postés
8
Date d'inscription
mardi 20 novembre 2012
Statut
Membre
Dernière intervention
15 mai 2013

Je pense que vous utilisez ArrayList ou Vector. Vous pouvez retourner plusieurs valeurs
Messages postés
16358
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
7 juin 2021
2 842
Il est important de voir les tableaux avant d'utiliser des Collections, en plus pour deux éléments, l'intérêt de celles-ci est critiquable puisque ça nécessite d'utiliser les Wrappers (Integer au lieu de int), enfin, Vector est à proscrire quand il ne s'agit pas de faire une application thread-safe.
Messages postés
8
Date d'inscription
mardi 20 novembre 2012
Statut
Membre
Dernière intervention
15 mai 2013

Pardon, je ne comprends pas votre opinion. Vous voulez retourner plusieurs valeurs. Si vous voulez prendre les valeurs, vous pouvez utiliser ArrayList ou Vector comme les tableaux dans C/C++
Messages postés
16358
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
7 juin 2021
2 842
Et pourquoi ne pas directement utiliser les tableaux de Java comme je le proposais ?
Les ArrayList et Vector sont comparable aux outils la STL du C++ (std::vector etc.), à part qu'en C++ on peut directement mettre des int dans les templates, ce qui n'est pas possible en Java car les types paramétrés sont nécessairement des objets, il faut donc faire des opérations de cast (heureusement implicites) pour passer des int aux Integer et inversement, ce qui rend le programme plus lourd. À titre de comparaison un Vector<Integer> avec deux Integer, ça fait 80 octets, alors qu'un int[2] n'en fait que 48.

Le problème de ny est vraiment simpliste, il ne connaissait juste pas les tableaux, il faudrait donc qu'il commence par là avant de manipuler des Collection (List, etc.) dont il n'a clairement pas besoin.
Messages postés
8
Date d'inscription
mardi 20 novembre 2012
Statut
Membre
Dernière intervention
15 mai 2013

D'accord, Vous avez raison. Merci de votre réponse :D