這樣做的一種方法是編寫一個函數,如果int代表閏年,則返回int int並返回true
。例如,下面的方法使用您在上面寫的代碼的簡化,一個行版本:
public static bool IsLeapYear(int year)
{
return (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;
}
然後,你可以從用戶那裏得到一串年(在這個例子中,我們使用一個逗號的年 - 分隔列表)分裂年到一個數組(在逗號字符),並調用每年這種方法在一個循環:
private static void Main()
{
// Get a list of years from the user
Console.Write("Enter some years separated by commas: ");
var input = Console.ReadLine();
// Split the user input on the comma character, creating an array of years
var years = input.Split(',');
foreach (var year in years)
{
bool isLeapYear = IsLeapYear(int.Parse(year));
if (isLeapYear)
{
Console.WriteLine("{0} is a leap year", year);
}
else
{
Console.WriteLine("{0} is not a leap year", year);
}
}
Console.WriteLine("\nDone!\nPress any key to exit...");
Console.ReadKey();
}
輸出
如果你想一次輸入一個,你可以做的另一件事就是要求用戶在一個循環內輸入新的一年,並在輸入一個整數後給他們一個答案。這裏有一個例子,在這裏我也添加了名爲GetIntFromUser
另一個函數,這迫使他們進入一個有效的整數(它不停地問,直到輸入一個):
private static void Main()
{
// In this loop, ask for a year and tell them the answer
while (true)
{
int input = GetIntFromUser("Enter a year to check: ");
string verb = IsLeapYear(input) ? "is" : "is not";
Console.WriteLine($"{input} {verb} a leap year.\n");
}
}
public static int GetIntFromUser(string prompt)
{
int input;
// Show the prompt and keep looping until the input is a valid integer
do
{
Console.Write(prompt);
} while (!int.TryParse(Console.ReadLine(), out input));
return input;
}
public static bool IsLeapYear(int year)
{
return (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;
}
輸出
你知道'for'循環是什麼嗎? – dan04
我明白你寫了這個練習,但請知道在現實世界中,你應該使用'DateTime.IsLeapYear'內置函數。我不會讓任何代碼審查通過手工製作的閏年檢查。 –
還沒有。我可能會提前一點。但是如果你想檢查另一個隨機年份,從頭開始運行一切都有點不舒服。因此,這個問題。 – Katerina