“子方法”中的局部变量

时间:2012-05-09 04:27:33

标签: java scope

这是我的代码:

public void viewFlight() {
  int select;
  String option;
  String newOrigin = null;
  viewFlightOrigin();
}

public void viewFlightOrigin() {
  option = console.nextLine();
  switch (select) {
    case 1:
      System.out.println("=======================================");
      System.out.println("city of origin: Melbourne");
      System.out.println("=======================================");
      newOrigin = "Melbourne";
      break;

    // ...
  }
}

如何在viewFlight()中再次使用viewFlightOrigin()中的局部变量,而无需在字段中声明变量或在viewFlightOrigin()中重新声明?

5 个答案:

答案 0 :(得分:2)

如果您需要使用和修改相同的"变量"在两种不同的方法中,它们不能是局部变量,它们是类的实例属性

或者,您可以将它们作为参数传递给viewFlightOrigin(),只需记住,在方法返回{后,对viewFlightOrigin()内的变量的任何修改都将可见{1}}。

答案 1 :(得分:1)

如果您不需要修改变量,最简单的方法是将其作为参数传递给函数:

viewFlightOrigin(newOrigin);

public void viewFlightOrigin(String option) {
    // ...
}

如果需要修改变量,可以从方法中返回新值:

newOrigin = viewFlightOrigin(origin);

public String viewFlightOrigin(String option) {
    // ...
}

答案 2 :(得分:0)

1.
public void viewFlight()
{
  .....
  viewFlightOrigin(option);
  ....
}

2.declare a instance field then it's not a local variable

答案 3 :(得分:0)

使用参数:

public void viewFlight() {
    int select;
    String option;

    viewFlightOrigin(select, option);
}

public void viewFlightOrigin(int select, String option) {...}

答案 4 :(得分:0)

只有不同方法的实例变量可用。局部变量具有范围,直到该方法不在方法的一侧。