在Java中的不同方法中使用本地声明的变量

时间:2018-05-23 20:51:59

标签: java methods local-variables

我对学校作业有点困难,长话短说我在方法中声明了两个局部变量,我需要在方法之外访问这些变量:

 public String convertHeightToFeetInches(String input){

    int height = Integer.parseInt(input); 
    int resultFeet = height / IN_PER_FOOT;
    int resultInches = height % IN_PER_FOOT;
    Math.floor(resultInches);
    return input;
}

我必须以不同的方法打印以下字符串:

    System.out.println("Height: " + resultFeet + " feet " + resultInches + " inches");

有什么建议吗?

谢谢。

3 个答案:

答案 0 :(得分:1)

您无法访问定义范围之外的局部变量。您需要通过方法

更改返回的内容

首先定义一个容器类来保存结果......

public class FeetInch {

    private int feet;
    private int inches;

    public FeetInch(int feet, int inches) {
        this.feet = feet;
        this.inches = inches;
    }

    public int getFeet() {
        return feet;
    }

    public int getInches() {
        return inches;
    }

}

然后修改方法以创建并返回它......

public FeetInch convertHeightToFeetInches(String input) {
    int height = Integer.parseInt(input);
    int resultFeet = height / IN_PER_FOOT;
    int resultInches = height % IN_PER_FOOT;
    Math.floor(resultInches);
    return new FeetInch(resultFeet, resultInches);
}

答案 1 :(得分:0)

您无法从方法B中的方法A访问本地变量。这就是为什么它们是本地的。 看看:https://docs.oracle.com/javase/tutorial/java/nutsandbolts/variables.html

  

因此,局部变量仅对它们的方法可见   宣布;他们无法从班上其他人那里获得。

我建议使用@MadProgrammer编写的解决方案 - 创建包含feetinches的类。

答案 2 :(得分:0)

您需要创建一个保存结果的共享变量,或者将结果封装在单个对象中,然后返回调用方法,它可能是类result

public class Result {
  public final int resultFeet;
  public final int resultInches;

  public Result(int resultFeet, int resultInches) {
    this.resultFeet = resultFeet;
    this.resultInches = resultInches;
  }
}

现在,你做了一个结果,

public Result convertHeightToFeetInches(String input){

    int height = Integer.parseInt(input); 
    int resultFeet = height / IN_PER_FOOT;
    int resultInches = height % IN_PER_FOOT;
    Math.floor(resultInches);
    return new Result(resultFeet, resultInches);
}

将此结果用于其他功能以打印结果。

    Result result = convertHeightToFeetInches(<your_input>);
    System.out.println("Height: " + result.resultFeet + " feet " + result.resultInches + " inches")