簡體   English   中英

在83年和4個月內轉換1000個月

[英]Convert 1000 months in 83 years and 4 months

我嘗試做某事及其工作,但是當我嘗試在1個月以下約會時,它就會崩潰。 有人能幫我嗎? 代碼是這樣的:

int page = int.Parse(Console.ReadLine());
int campingDays = int.Parse(Console.ReadLine());
int pagesPerDay = int.Parse(Console.ReadLine());

int months = page / ((30 - campingDays) * pagesPerDay);
int years = months / 12;
int remainingMonths = months % 12;

Console.WriteLine("{0} years {1} months", years, remainingMonths);

這就是我解決“ 0年1個月”問題的方式。 你去!

    int readedPages = (30 - campingDays) * regularDays;

    if ((campingDays == 30) || (regularDays == 0))
    {
        Console.WriteLine("never");
    }
    else
    {
        double readDuration = Math.Ceiling(bookPages / (double)readedPages);
        double years = (int)(readDuration / 12);
        double remainingMonths =(readDuration % 12);
        Console.WriteLine("{0} years {1} months", years, remainingMonths);
    }

每當你會得到除以零的錯誤

  • campingDays是30,因為(30 - campingDays)
  • pagesPerDay是-0

有問題的行:

int months = page / ((30 - campingDays) * pagesPerDay);

您可能需要2條if語句來處理這些情況。

Michal Ciechan是正確的。 (請仔細閱讀您的答案)

建議:

int _campingDaysAdj = 30 - campingDays;
if(_campingDaysAdj > 0 && pagesPerDay > 0)
{
    int months = page / ((30 - campingDays) * pagesPerDay);
    int years = months / 12;
    int remainingMonths = months % 12;

    Console.WriteLine("{0} years {1} months", years, remainingMonths);
}
else
{
    //throw an exception or an error message etc.
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM