Как я могу заставить это работать для l oop без инициализации? - PullRequest
1 голос
/ 08 апреля 2020

Я очень новичок и пробую случайные простые вещи, чтобы получить гр asp на мои навыки. Предполагается, что это для l oop займет количество дней в году, в котором у вас половина дня рождения, и выяснит, к какому месяцу относится этот день. Неуклюжий, я знаю, но это просто для практики. DaysIntoYear представляет, сколько дней в году у людей фактический день рождения.

Идея состоит в том, чтобы взять число дней в году и вычесть по очереди из всех месяцев. Когда оно становится ниже 0, мы знаем, что это месяц, который я ищу, и я могу взять это int и передать его через другую функцию, чтобы получить строковую версию названия месяца. он хочет, чтобы я инициализировал переменную Month, но это нарушает мои уравнения. Инициализация его как 0 или 365 не работает. Как я могу сделать эту работу, используя только концепции, изложенные здесь? Опять же, я очень новичок и просто пытаюсь работать с простыми методами и для циклов прямо сейчас. Но, может быть, Do-While l oop будет работать лучше? Дайте мне знать.

public static int GetHalfDay (int Birthday)
{
    int monthLength[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
    int YearLength = 365; int HalfYear = 183;
    int HalfDay;
    int x = 1 ;

    if (Birthday >= 183)
    {
        HalfDay = Birthday - HalfYear;
    }
    else if (Birthday < 183)
    {
        HalfDay = Birthday + HalfYear;
    }

    for (int i=0; x > 0 ; i++)
    {
        x = YearLength - monthLength[i];

    }

   return x; 
}

1 Ответ

1 голос
/ 08 апреля 2020

Попробуйте:

public static int getHalfDay(int birthday) {
    int monthLength[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
    int yearLength = (birthday + 183) % 365;
    int i;
    for (i = 1; yearLength > 0 ; i++) {
        yearLength -= monthLength[i];
    }
    return i - 1;
}

Я предлагаю пройтись по нему с помощью отладчика, чтобы понять, как он работает.

...