【问题标题】:Passing and Getting array as parameter to a function in java将数组作为参数传递和获取java中的函数
【发布时间】:2012-02-19 14:19:30
【问题描述】:

谁能帮我从函数X() 返回数组。我想将该数组作为同一类中的参数传递给函数Y()

我有什么:

int[] create()throws IOException {
    System.out.println("Enter Size of Array");
    BufferedReader b=new BufferedReader(new InputStreamReader(System.in)); 
    n=Integer.parseInt(b.readLine());
    //A=new int[n];
    System.out.println("Enter Array"); for(i=0;i<n;i++) {
        int y=Integer.parseInt(b.readLine());
        A[i]=y;
    }
    return A;
}

void getarray() {
}

【问题讨论】:

  • 到目前为止你做了什么?代码?
  • 你有一些代码要分享吗?我不是很明白你的意思,只是创建一个带有数组类型参数的方法?
  • int[] create()throws IOException { System.out.println("输入数组大小"); BufferedReader b=new BufferedReader(new InputStreamReader(System.in)); n=Integer.parseInt(b.readLine()); //A=new int[n]; System.out.println("输入数组"); for(i=0;i
  • 我想在 getarray 函数中访问 d 数组...
  • @Denny:请更新您的问题并添加代码。

标签: java arrays function parameters


【解决方案1】:

您可以将X()的参数存储在一个成员变量中,然后通过Y()中的成员变量访问数组。

class YourClass {

    private int[] someArray;

    public void X(int[] argArray) {
        someArray = argArray;         // save it like this
        ...
    }

    public void Y() {
        ...
        someArray[3] = 2;             // access it here
    }
}

请注意,如果您希望线程安全,可能需要考虑将此类临时变量存储在 ThreadLocal&lt;int[]&gt; 中。


关于更新:如果A是一个成员变量,你可以访问getarray()中的A,或者只引用A,或者,如果是this.A被一些局部变量遮蔽。

【讨论】:

  • +1 用于在问题是“我如何将数组传递给函数”时提及 ThreadLocal。我笑了;)
  • 哈哈哈,我知道了!但是我注意到,一个完整的菜鸟问题的答案,仍然对普通程序员有一点教育,通常会获得一些额外的选票:D
  • 也许是真的,但对我来说,我真的看到它时不由自主地笑了起来。所以赞成笑声,而不是教育
  • 呵呵。明显地。我知道你是这里的 Java 专家之一 :)
  • 有一天我会成为最好的Java程序员-.-"。然后你会叫我亲:|
【解决方案2】:

通过声明方法将数组传递给方法

public void myMethod(int[] ary);

然后,如果你有一个对象的实例,你就有

int[] myAry = new int[9];
obj.myMethod(myArray);

现在,如果您的 myMethod 正在调用您的第二个方法,它可以将数组的引用传递给需要接受数组参数的第二个方法。如果没有,则需要将数组存储在类的成员字段中。

class MyClass {
    int[] tmp;

    public void myMethod(int[] ary) {
        this.tmp = ary;
    }

    public void myMethod2(){
        // can use this.tmp, which will be null if it isn't set.
    }


}

【讨论】:

  • ? =ob.array(); array() 在哪里返回数组..如何将 d 值存储在?
  • 我不懂你。要创建一个整数数组,只需执行 int[] myArray = new int[10];
【解决方案3】:

要将数组作为参数传递给您可以使用的方法:

public void X(int[] array) {
}

如果你想从同一个类的两个不同方法访问一个数组,你可以让数组成为类的成员:

public class MyClass {
    int[] array = new int[10];

    public void X() {
    }

    public void Y() {
    }
}

现在XY 都可以访问该数组了。

【讨论】:

    【解决方案4】:
    class Z
    {
      private int a[];
    
      public void x(int input [])
      {
         a=input.clone();//store input values in 'a' safely
      }
    
      public void y()
      {
       //work with a [] here
       System.out.println(a[0]);
       }
    }
    

    【讨论】:

      【解决方案5】:

      您可以将任何内容传递给方法,包括数组。您所要做的就是在对象或简单变量类型之后添加方括号[](例如int[] inputchar[] inputJTree[] trees 等)

      public void X(int[] input) {
          //do stuff with 'input'
          Y(input);
      }
      
      public void Y(int[] input) {
          //do stuff with 'input'
      }
      

      请注意,方法Y 接受简单变量类型int 的数组。如果没有,您必须将数组存储在类的成员字段中,以便在 Y 方法中使用您的数组。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-02-23
        • 2013-05-23
        • 2011-09-27
        • 1970-01-01
        • 1970-01-01
        • 2020-05-13
        • 2018-02-01
        相关资源
        最近更新 更多