2 votes

Comment passer la valeur de retour à d'autres classes sans exécuter la méthode plusieurs fois

J'ai la classe :

public class Provider { 
public static int getNumberofObjects() {
    Scanner in = new Scanner(System.in);

    System.out.print("Entrer le nombre d'objets : ");

    int numberOfObjects = in.nextInt();

    return numberOfObjects;
}}

Comment puis-je passer la variable numberOfObjects sans devoir demander à l'utilisateur d'entrer à nouveau un nouveau nombre d'objets à chaque fois que je veux utiliser cette variable ?

Ce que je fais actuellement est :

public class B {
Provider provider = new Provider();

int numberOfObjects= Provider.getNumberofObjects(); }

mais comme j'utilise la variable numberOfObjects dans plusieurs méthodes de cette classe, à chaque fois on me demande de saisir de nouvelles valeurs.

6voto

dasblinkenlight Points 264350

Une façon de le faire est de mettre en cache le résultat dans le fournisseur et de le retourner lors de tous les appels ultérieurs, comme ceci :

public class Provider { 
    boolean gotNumber = false;
    int theNumber;
    public int getNumberofObjects() {
        if (!gotNumber) {
            Scanner in = new Scanner(System.in);
            System.out.print("Entrez le nombre d'objets : ");
            theNumber = in.nextInt();
            gotNumber = true;
        }
        return theNumber;
    }
}

Cette implémentation demande le nombre à l'utilisateur seulement la première fois que la méthode getNumberofObjects() est appelée ; toutes les invocations ultérieures utilisent theNumber récupéré lors de la première invocation.

Notez que j'ai rendu la méthode getNumberofObjects() non statique, donc vous devez passer new Provider() aux classes qui ont besoin du nombre.

0voto

Abhijith Nagarajan Points 1510

Déclarez la variable en tant que variable d'instance (définie au niveau de la classe) au lieu de l'utiliser à l'intérieur de la méthode

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X