【问题标题】:Share variable between methods in Java在 Java 中的方法之间共享变量
【发布时间】:2015-03-28 22:02:50
【问题描述】:

我是 Java 新手,我没有什么问题。我想用一种方法制作数组并在另一种方法中显示长度。我知道如何同时使用一种方法:

class Test
{
    public void create()
    {
        Scanner in = new Scanner(System.in);
        System.out.println("Number of elements: ");
        int n=in.nextInt();
        int arr[]=new int[n];
        System.out.println("Number of elements: " + arr.length);
    }
}

但是我该怎么做呢?

class Test
{
    public void create()
    {
        Scanner in = new Scanner(System.in);
        System.out.println("Number of elements: ");
        int n=in.nextInt();
        int arr[]=new int[n];
    }

    public void display()
    {
        System.out.println("Wielkosc tablicy: " + arr.length);
    }
}

【问题讨论】:

  • 使arr成为Test类的私有实例变量。

标签: java variables methods


【解决方案1】:

arr 设为您的类的私有实例变量,以便可以从任何方法访问它:

class Test
{
    private int[] arr;
    public void create()
    {
        Scanner in = new Scanner(System.in);
        System.out.println("Number of elements: ");
        int n=in.nextInt();
        arr=new int[n];
    }

    public void display()
    {
        System.out.println("Wielkosc tablicy: " + arr.length);
    }
}

【讨论】:

    【解决方案2】:

    如果该数组预计只存在于调用create 的生命周期内,我建议将display 设为私有。然后更新 display 的签名以将 int[] 作为参数

    class Test {
        public void create() {
            Scanner in = new Scanner(System.in);
            System.out.println("Number of elements: ");
            int n=in.nextInt();
            int arr[]=new int[n];
            display(arr);
        }
    
        private void display(int[] arr) {
            System.out.println("Wielkosc tablicy: " + arr.length);
        }
    }
    

    如果 int[] 的生存时间不仅仅是对create 的调用,那么您应该将 int[] 设置为Test 上的字段,如@lodo 的回答中所述

    【讨论】:

    • 鉴于 display 方法是公开的,而 arr 是在类内部计算的,这似乎不是 100% 正确的。可能Test 类的用户想要显示该类的信息,但希望数组由create 给出,因此需要在不带任何参数的情况下调用display
    • 鉴于问题的性质,我认为您使用的推理的微妙之处不一定适用!
    • 不一定,但有可能。但你是对的,这超出了问题的范围。
    • 我已经更新了一些答案,希望能解决这种情况的模糊性
    猜你喜欢
    • 1970-01-01
    • 2012-01-30
    • 1970-01-01
    • 2014-04-27
    • 1970-01-01
    • 2011-12-01
    • 2019-05-01
    • 2014-02-13
    • 1970-01-01
    相关资源
    最近更新 更多