Accessing arrays with methods

后端 未结 4 1979
旧时难觅i
旧时难觅i 2021-01-24 02:23

Hi guys i\'m just starting to learn Java, and I wondering how can I access an array that was declared in a method from another method? The design look like this:



        
相关标签:
4条回答
  • 2021-01-24 02:44

    Read about scope of variables in java. This is link I could find on quick Google search. http://www.java-made-easy.com/variable-scope.html

    You can declare the array at class level then it is accessible in all methods.

        public class Arrays {
        int arraysize = 2;
        private float[] array = null;
    
        public void initializeArray() {
            array = new float[arraySize]; // Declare array
        }
    
        public void accessArray() {
            // access array here.
        }
    }
    

    Or You can pass the variables in method.

        public class Arrays {
        int arraysize = 2;
    
        public void initializeArray() {
            float[] array = new float[arraySize]; // Declare array
            accessArray(array);
        }
    
        public void accessArray(float[] array) {
            // access array here.
        }
    }
    

    Given the amount of information, I have from question, approach 1 seems better than 2.

    0 讨论(0)
  • 2021-01-24 02:44

    This is done thusly

    public class myClass{
      int arraysize = 2;
      float[] myArray; // Declare array
    
      public myClass(){
        myArray = new float[arraySize]; // initialize array 
      }
    
      public float[] accessArray(){
        return myArray;
      }
    }
    

    The array declaration must not be done inside the class methods. Variable declaration done inside a method limits it's scope of a variable to the method. (i.e you can't use it anywhere else).

    The array is then instantiated in a constructor. A constructor is a special function that is run when a class is instantiated. Constructor are used to instantiated a class's variables Constructors have the same name as their class and must not specify a return type (so no public int or public void just public)

    Next you need to change the return type of the accessArray method. A return type of void states that the method isn't going to return anything. Change it to float[] Then your accessArray method need only return the array variable.

    EDIT: The "return myArray;" line of code gives a reference to the array to what ever called the function (Not a copy of the array, the actual array, a quick of Java is that it always does this except when returning primitive data types where it returns a copy)

    If you want accessArray() to set floats in the array instead of returning the array it should be implmented like this.

    public void accessArray(int index, float value){
      myArray[index] = value;
    }
    
    0 讨论(0)
  • 2021-01-24 02:58

    There a two options:

    • You declare that array as instance variable
    public class Arrays {
    
        private int arraySize = 2;
        private float array[];// Declare array
    
        public void initializeArray() {
            array = new float[arraySize];
        }
    
        public void accessArray() {
            // I want to access the array from this method.
            float first = array[0];
        }
    }
    
    • You pass the array as parameter to the method (resp. the initializeArray method should return an array)
    public class Arrays {
    
        public static void main(String[] args) {
            int arraySize = 2;
            float[] array = initializeArray(arraySize);
            accessArray(array);
        }
    
        public static float[] initializeArray(int size) {
            return new float[size];
        }
    
        public static void accessArray(float[] floats) {
            // I want to access the array from this method.
            float first = floats[0];
        }
    }
    
    0 讨论(0)
  • 2021-01-24 02:59

    You need to move your declaration to make it a member, otherwise it will go out of scope once the initializeArray call ends. Then you can access the array from both methods. Try this:

    public class Arrays{
       float[] array;
       int arraysize = 2;
    
       public void initializeArray(){
          array = new float[arraySize];   // Declare array  
       }
    
       public void accessArray(){
          array[0] = 1.0f;
       }
     }
    
    0 讨论(0)
提交回复
热议问题