如何在不执行多次方法的情况下将返回值传递给其他类

Spy*_*ros 2 java class return-value

我上课了:

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

    System.out.print("Input Number of Objects: ");

    int numberOfObjects = in.nextInt();

    return numberOfObjects;
}}
Run Code Online (Sandbox Code Playgroud)

我怎样才能传递just numberOfObjects变量而不必在每次我想要这个变量时提示用户再次输入新的对象数?

我在做的是:

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

int numberOfObjects= Provider.getNumberofObjects(); }
Run Code Online (Sandbox Code Playgroud)

但是因为我在这个类中使用了多个方法中的numberOfobjects,所以每次提示输入新值时.

das*_*ght 6

一种方法是将结果缓存在提供程序中,并在所有后续调用中返回它,如下所示:

public class Provider { 
    boolean gotNumber = false;
    int theNumber;
    public int getNumberofObjects() {
        if (!gotNumber) {
            Scanner in = new Scanner(System.in);
            System.out.print("Input Number of Objects: ");
            theNumber = in.nextInt();
            gotNumber = true;
        }
        return theNumber;
    }
}
Run Code Online (Sandbox Code Playgroud)

该实现仅在第一次getNumberofObjects()调用该方法时从用户请求该号码; 所有后续调用都theNumber在第一次调用时使用read.

请注意,我使getNumberofObjects()方法非静态,因此您需要传递new Provider()给需要该数字的类.