简体   繁体   中英

Unable to access a method's local variables outside of the method in Java

I am new to Java and am trying to access method variables outside of the method, but it doesn't work.

Code is below:

public class MethodAccess {
    public static void minus() {
        int a=10;
        int b=15;
    }

    public static void main(String[] args) {
        //Here i want to access variable names a & b that is in minus()
        int c = b - a;
    }
}

Because a and b are local variables. If you want to access to them in your main method, you need to modify your code. For example:

public class methodacess {
       private static int a;
       private static int b;

       public static void minus(){   
           methodacess obj =new methodacess();
           a=10;
           b=15;    
       }   

       public static void main (String[] args){     
           int c = b - a;    
       }   
} 

The variables that are defined inside a method are local to that method, so you cannot use them outside. If you want to use them outside, define instance variables in the beginning of your class.

I think you might want to do it hte other way around:

public class methodacess {

     public int minus(int a, int b){   
          int c = b - a;
          return c;
     }   
     public static void main (String[] args){   
          // Here youi want to call minus(10, 15) 
          int a=10;
          int b=15;
          System.out.println("Result is: " + minus(a, b))
     }   
} 

You need to define the variables as static class variables, so you can access them from a static function. Also watch out for the access modifiers, since when the variable is private you can't access them outside any other class.

public class methodacess {

   private static int a;
   private static int b;

   public static void minus(){   
      methodacess obj =new methodacess();
      a=10;
      b=15;
   }  

   public static void main (String[] args){   
      //Here i want to access variable names a & b that is in minus() 
      int c = b - a; 
   }   

} 

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM