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

Java 如何在不多次执行该方法的情况下将返回值传递给其他类,java,class,return-value,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; }} 如何传递just n

我有一门课:

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;
}}
如何传递just numberOfObjects变量,而不必在每次需要该变量时提示用户再次输入新数量的对象

我正在做的是:

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

int numberOfObjects= Provider.getNumberofObjects(); }

但是由于我在这个类的多个方法中使用numberOfobjects,每次我都会被提示输入新值。

将变量作为实例变量(在类级别定义),而不是在方法中使用它

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

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;
    }
}
此实现仅在第一次调用
getNumberofObjects()
方法时才向用户请求号码;所有后续调用都使用在第一次调用中读取的编号


请注意,我将
getNumberofObjects()
方法设置为非静态,因此需要将
new Provider()
传递给需要该编号的类。

读取不同类/方法中的对象编号,并将其存储在那里。然后,在创建
提供程序的新实例时,设置此对象数。不需要类的实例来调用类的静态方法。请注意,您甚至没有使用provider变量。@GriffeyDog OP没有使用
provider
类的任何实例来执行
provider.getNumberofObjects()否,但他正在创建一个:
提供者提供者=新提供者()+1尽管我可能会跳过布尔值,只需将数字初始化为Integer.MIN_值,然后检查该值而不是布尔值。@splungebob我知道下次我这样做时,我们的一个QA会输入-2147483648来烦我;-)哈哈,我说,那就换成长跑吧!