Расчет возраста всегда выключен одним - PullRequest
0 голосов
/ 04 июня 2019

Задача - создать функцию.

Функция принимает два аргумента:

  • текущий возраст отца (лет)
  • текущий возраст его сына (лет)

Рассчитайте, сколько лет тому назад отцу было в два раза больше, чем его сыну (или сколько лет ему будет в два раза).

public static int TwiceAsOld(int dadYears, int sonYears){

    int dadYearsTemp = dadYears;
    int years = 0;
    int yearsAgo = 0;

    for (int i = 0; i <= dadYears; i++ ){
        if (dadYearsTemp / 2 == sonYears) {
            years = dadYearsTemp;
            yearsAgo = dadYears - years;
            System.out.println(yearsAgo);
            return yearsAgo;
        }
        else if (sonYears * 2 > dadYears) {
            years = (sonYears * 2) - dadYears;
            System.out.println(years);
            return years;
        }
        dadYearsTemp = dadYearsTemp -1;
    }

    return 42; // The meaning of life

}

Например, при вводе (30, 7) я ожидаю, что моя функция вернется к 16, потому что 16 лет назад отцу было 14 лет, что означает, что ему сейчас вдвое больше, чем его сыну (7). Но моя функция возвращает 15.

Полагаю, это не большая ошибка, но я, честно говоря, не могу понять, почему это не работает, поэтому я буду признателен за некоторую помощь.

Ответы [ 2 ]

1 голос
/ 04 июня 2019

Пусть нынешний возраст отца = f

текущий возраст сына = s

пусть x лет назад отец был вдвое старше сына.

, затем 2 (с-х) = (ф-х) => x = 2 * s - f

Примечание: если x становится отрицательным, то через x лет отец будет в два раза старше сына (тест для ввода [25,5])

public static void main(String[] args) {
    int x = twiceAsOld(25, 5);
    System.out.println(x);
  }

  public static int twiceAsOld(int dadYears, int sonYears) {
    return 2*sonYears - dadYears;

  }
0 голосов
/ 04 июня 2019

Ниже приведен пример кода, который подсчитывает, сколько лет назад возраст отца был вдвое больше сына по данным выборки.

 public static void main (String args[]) {
    int sonAge = 10;
    int fatherAge = 24;
    int yearsAgo = 0;
    while(sonAge*2 != fatherAge && fatherAge>0 ) {
        yearsAgo++;
        fatherAge = fatherAge-1;
    }
    System.out.println(yearsAgo);
}
...