Вызвать метод без повторного ввода данных

85
06 июля 2021, 03:30

У меня есть два класса, main и Lesson7. В классе Lesson7 у меня есть три метода:

input()

  • возвращает ввод с консоли(переменная scr),

pullingUp

  • возвращает переменную (valueInWork)

pullingUpForTwenty

  • ничего не возвращает.

Если я буду вызывать с main поочередно программу, например

lesson7.pullingUpForTwenty(lesson7.pullingUp(lesson7.input()),lesson7.input());

то программа два раза зайдет в метод input(), и соответственно мне нужно два раза вводить параметры, глобальными их сделать не вариант. Заранее спасибо.

import java.util.Scanner;

public class Lesson7 {

private static Scanner scanner = new Scanner(System.in);
private int onePullingUp = 5;
private int rest = 60;

public  int input() {
    System.out.println("Введите количество подходов");
    int scr = scanner.nextInt();
    return scr;

}
public int pullingUp(int scr) {
    int value = scr * (scr + 1) / 2;
    System.out.println("Кол-во подтягиваний: " + value);
    int valueInWork = value * onePullingUp;
    int valueInRest = scr * rest;
    int valueAll = valueInWork + valueInRest - 60;
    System.out.println("Количество времени выполнения: " + valueAll / 60 + " минуты " + valueAll % 60 + " секунд");
    return valueInWork;
}
public void pullingUpForTwenty(int valueInWork,int scr) {
    double restForTwenty = 60;
    for (int i = 1; i < scr - 1; i++) {
        double scrForTwenty = restForTwenty * 0.2;
        restForTwenty += restForTwenty;
        restForTwenty = scrForTwenty + restForTwenty;
    }
    if (scr > 1) {
        int valueAll2 = (int) (restForTwenty + valueInWork);
        System.out.println("Количество времени выполнения с учетом добавления 20%: " + valueAll2 / 60 + " минуты " + valueAll2 % 60 + " секунд");
    } else {
        System.out.println("Количество времени выполнения: " + 0);
    }
}

}

public class Main {
public static void main(String[] args) {
    Lesson7 lesson7 = new Lesson7();
    lesson7.pullingUpForTwenty(lesson7.pullingUp(lesson7.input()),lesson7.input());
}

}

Answer 1
public static void main(String[] args) {
  Lesson7 lesson7 = new Lesson7();
  int inp = lesson7.input();
  lesson7.pullingUpForTwenty(lesson7.pullingUp(inp), inp);
}

или

public class Lesson7 {
  ...
  int _input;
  boolean _hasInput = false;
  public  int input() {
    if (!_hasInput) {
      System.out.println("Введите количество подходов");
      _input = scanner.nextInt();
      _hasInput = true;
    }
    return _input;
  }
READ ALSO
Как сервису работать с БД Room?

Как сервису работать с БД Room?

Use case: приложение получает текст, отправляет его на сервер и получает аудиофайлыЭти аудиофайлы должны сохраняться на устройстве и uri этих...

103
Запуск jar (Swing) приложения на машине клиента (Windows)

Запуск jar (Swing) приложения на машине клиента (Windows)

Есть задача - собрать jar file так, чтобы он запускается на машине клиента - WindowsУ меня jar file запускается (двойным кликом или через командную строку...

85
Error 404. The origin server did not find a current representation for the target resource or is not willing to disclose that one exists. Ошибка

Error 404. The origin server did not find a current representation for the target resource or is not willing to disclose that one exists. Ошибка

Ребята помогите уже все перебробовал, но ничего не работаетКогда ввожу localhost:8080 страница откривается, а когда localhost:8080/page -вилетает Error 404

114
java полиморфизм

java полиморфизм

Использование дочернего класса в качестве родительского класса

100