Как сбросить значения int - PullRequest
       2

Как сбросить значения int

0 голосов
/ 07 октября 2019

Попытка написать код для моего вступления в курс Java, но не удалось сбросить значение int.

Для моего вступительного курса мне нужно написать программу, которая определяет срок оплаты в зависимости от типа книги, которую проверяет пользователь. Мне не разрешается использовать любые форматы даты, просто вводя месяц и год в виде целых чисел.

Основная часть этой программы состоит в том, что у новых книг есть 14-дневный контроль, а у не новых книг - 21день проверки лимита. Я выяснил, как добавить указанное количество дней в зависимости от типа книги, но, учитывая, что дни, месяцы и год определены как целые числа, как бы я сбросил дни, если введенная дата извлечения превышает количестводень в этом месяце?

Я знаю, как отформатировать его, чтобы оно продолжалось до следующего месяца. Но, скажем, пользователь вводит день проверки 15 февраля, как моя программа узнает, как возобновить подсчет в следующем месяце, но также узнает, когда она достигает своего предела в 14 или 21 день?

String releaseType;
int coMonth, coYear;
int coDays = 0;

// determing how many days added to due date
if (releaseType == "NEW"){
    coDays += 14;
}else{
    coDays += 21;
}
if (coDays > 30){
    coMonth +=1;
}
if (coMonth >12){
    coYear +=1;
}
System.out.println("You due date is " + coMonth + "/" + coDays + "/" + coYear);

Входные данные: НОВЫЙ, 2 (месяц) 15 (день) 2019 (год) вывод: Дата исполнения 3/36/2019

1 Ответ

0 голосов
/ 07 октября 2019

Ниже приведен план класса, который должен делать то, что вы хотите.

class Date
{
    Date(int InputDay, int InputMonth, int InputYear;
    {
         Day = InputDay;
         Month = InputMonth;
         Year = InputYear;
    }

    public final int GetDay()
    {
        return Day;
    }

    public final int GetMonth()
    {
        return Month;
    }

    public final int GetYear()
    {
        return Year;
    }

    // Increments the current date by NumDays. 
    public final Date AddDays(int NumDays)
    {
        int TempDay = Day;
        int TempMonth = Month;
        int TempYear = Year;

        while (NumDays > 0)
        {
            switch (Month)
            {
                case 1:  // Jan
                {
                    TempDay += NumDays;

                    if (TempDay > 31)
                    {
                        NumDays = TempDay - 31;
                        TempDay = 1;
                        TempMonth++;
                    }
                    else
                    {
                        NumDays = 0;
                    }
                } break;

                case 2:  // Feb
                {
                    TempDay += NumDays;

                    if (TempDay > 28 && IsLeapYear() == false)
                    {
                        NumDays = TempDay - 28;
                        TempDay = 1;
                        TempMonth++;
                    }
                    else if (TempDay > 29 && IsLeapYear() == true)
                    {
                        NumDays = TempDay - 29;
                        TempDay = 1;
                        TempMonth++;
                    }
                    else
                    {
                        NumDays = 0;
                    }

               } break;

               // Fill in the rest of the months. I've done the 
               // important ones.


                case 12:  // Dec
                {
                    TempDay += NumDays;

                    if (TempDay > 31)
                    {
                        NumDays = TempDay - 31;
                        TempDay = 1;
                        TempMonth = 1;
                        TempYear++;
                    }
                    else
                    {
                        NumDays = 0;
                    }

                } break;

            } // End switch 


        } // End while loop


        return new Date(TempDay, TempMonth, TempYear);
     }

     private boolean IsLeapYear()
     {
        boolean LeapYear = false;

        // Note: In the Gregorian calendar, it is also a leap year if the
        // year is divisible by 400 but it's not a leap year if it is
        // divisible by 100. 
        if ( (Year % 4 == 0 && Year % 100 != 0) || Year % 400 == 0)
        {
            LeapYear = true;
        }

        return LeapYear;
    }

    private final int Day;
    private final int Month; // Range: 1 - 12
    private final int Year;
}

Он будет использоваться следующим образом:

Date Today = new Date(7,10,2019), DueDate;

DueDate = Today.AddDays(21); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...