Как использовать изменение / изменение переменных в нескольких методах в классе? - PullRequest
0 голосов
/ 13 марта 2012

Идея локальных переменных немного сложна для понимания, когда я хочу, чтобы один метод инициализировал переменную, а другой метод использовал эту инициализированную переменную.

Пример

public class abc

public int startAngle;

public void angleMethod(){
startAngle = 90;
angle = startAngle;
}

public void methodTwo(){
anotherVar = angle + 10;   //I want this angle to be initialized to 90

Возможно ли использование угла, уже инициализированного до 90, первым методом? Причина, по которой я этого хочу, заключается в том, что я могу разбить то, что я хочу сделать с переменной, на более мелкие отдельные методы.

Я попытался передать переменную в качестве аргумента во втором методе, что-то вроде:

public void methodTwo(int angle)

но это не сработало.

Я читал об использовании

 this.angle = angle 

но я не уверен, что это делает или его цель. Я считаю, что мне нужно что-то делать с переменными, а затем использовать эти измененные переменные в других частях моей программы.

Кто-нибудь может мне помочь? Благодаря.

Ответы [ 2 ]

1 голос
/ 13 марта 2012

Я думаю, вы не понимаете, что такое локальная переменная. В вашем примере angle в angleMethod() отличается от angle в methodTwo() (насколько я могу судить, исходя из предоставленного кода, хотя я не вижу, где вы объявляете угол).

Я думаю, что-то вроде этого вы собираетесь:

public class abc
{
    //Declare class-scoped variables, accessible by all class methods.  Could be public or private.
    public int startAngle;

    //constructor - initialize vars here
    public abc()
    {
        startAngle = 90;
    }

    public void method()
    {
        int angleVar = startAngle + 10; //startAngle will be 90.
        //angleVar will be 100;
        //angleVar can only be accessed inside this method.
    }
}
0 голосов
/ 13 марта 2012

Если вы хотите инициализировать атрибут при создании объекта, у вас есть две опции:

  • Значение по умолчанию

    int startAngle = 90
    
  • Присвоение (всем) конструктора (ов)

Помимо этого, если вы хотите проверить, был ли вызван другой метод перед текущим методом, вы должны запрограммировать его самостоятельно (с помощьюНапример, метод, который должен быть вызван первым, устанавливает атрибут, а другой проверяет его).

...