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

标签 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;
}}

我如何传递 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() 方法时向用户请求数字;所有后续调用都使用在第一次调用中读取的 theNumber

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

关于java - 如何在不多次执行该方法的情况下将返回值传递给其他类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18984396/

相关文章:

java - 我不明白循环中的条件

c++ - 有没有办法在 C++ 函数体内定义返回类型?

c++ - 在类内的结构中定义枚举

c - printf() 函数如何处理使用全局缓冲区的函数返回的字符串?

function - 为什么不能用 VAR 返回类型声明函数?

java - 资源 JNDI 查找失败

Java:检查两个 double 之间是否是 100 的倍数

java.lang.ExceptionInInitializerError 和 org.hibernate.AnnotationException : mappedBy reference an unknown target entity property:

java - 将当前类加载到 JarOutputStream 中

Python 自省(introspection) : How to get varnames of class methods?