2016-05-10 6 views
-1
public class DemoClass { 

    public void setValue(int a, int b) 
    { 
     int x=a; 
     int y=b; 
    } 
    public void getValue() 
    { 

    } 
    public static void main(String[] args) 
    { 
     DemoClass dc=new DemoClass(); 
     dc.setValue(10, 20); 
     dc.getValue(); 
    } 
} 

В приведенной выше программе у меня есть два метода setValue() и getValue(). Метод SetValue имеет две переменные x и y, которым назначены значения 10 и 20 (из основного метода).Получить значение локальной переменной в другом методе в java

Теперь я хочу отобразить значение переменных x и y в методе getValue(). Но это невозможно, поскольку они являются локальными переменными. Есть ли способ сделать это?

+0

нет, вы можете сделать это, сделав их членами класса – SomeJavaGuy

+0

сделать их переменными экземпляра – Ramanlfc

ответ

0

Вы можете установить их как общедоступные, или если вы хотите использовать геттеры и сеттеры, вы можете это сделать.

public class DemoClass { 
    private int x; 
    private int y; 
    public void setValue(int a, int b) 
    { 
     this.x=a; 
     this.y=b; 
    } 
    public void getValue() 
    { 
     System.out.println(this.x); 
     System.out.println(this.y); 
    } 
    public static void main(String[] args) 
    { 
     DemoClass dc=new DemoClass(); 
     tc.setValue(10, 20); 
     tc.getValue(); 
    } 
} 

Вы также можете поместить информацию в функции конструктора следующим образом:

public class DemoClass { 
    private int x; 
    private int y; 
    public DemoClass() { 
     this.x = 0; // default value 
     this.y = 0; // default value 
    } 
    public void setValue(int a, int b) 
    { 
     this.x=a; 
     this.y=b; 
    } 
    public void getValue() 
    { 
     System.out.println(this.x); 
     System.out.println(this.y); 
    } 
    public static void main(String[] args) 
    { 
     DemoClass dc=new DemoClass(); 
     tc.setValue(10, 20); 
     tc.getValue(); 
    } 
} 

Таким образом, когда вы создаете объект, как:

DemoClass demoClass = new DemoClass(); 

Это уже установили эти объекты , Если вы этого не сделаете и случайно вызываете getValue(), и ничего не установлено, вы получите nullPointerException.

3

Есть ли какой-либо возможный способ сделать это?

Обычная вещь, чтобы сделать их поля класса, конкретно поля экземпляра:

public class DemoClass { 

    private int x;   // These are 
    private int y;   // instance fields 

    public void setValue(int a, int b) 
    { 
     this.x = a; 
     this.y = b; 
    } 

    public void getValue() 
    { 
     // Use `this.x` and `this.y` here 
    } 

    public static void main(String[] args) 
    { 
     DemoClass dc=new DemoClass(); 
     dc.setValue(10, 20); 
     dc.getValue(); 
    } 
} 

Это относительно редко, чтобы установить два отдельных поля с одним setValue способом, но есть случаи использования. Обычно у вас есть setX и setYgetX и getY).