Использование локальных объявленных переменных в другом методе в Java - PullRequest
0 голосов
/ 23 мая 2018

У меня небольшие трудности со школьным заданием, короче говоря, я объявил две локальные переменные в методе, и мне нужно получить доступ к этим переменным вне метода:

 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 голосов
/ 24 мая 2018

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

. Начните с определения класса контейнера для хранения результатов ...

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);
}
0 голосов
/ 24 мая 2018

Вам необходимо создать общую переменную, которая будет содержать ваш результат, или вы инкапсулируете результат в один объект, а затем возвращаетесь к методу вызывающего, это может быть класс, подобный 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")
0 голосов
/ 23 мая 2018

Вы не можете получить доступ к локальным переменным из метода A в методе B. Вот почему они локальные.Посмотрите: https://docs.oracle.com/javase/tutorial/java/nutsandbolts/variables.html

Таким образом, локальные переменные видны только тем методам, в которых они объявлены;они не доступны из остальных классов.

Я рекомендую использовать решение, написанное @MadProgrammer - создать класс, который содержит feet и inches.

...