これを行う1つの方法は、intをとる関数を書くことで、intがうるう年を表す場合はtrue
を返します。例えば、以下の方法はあなたが上に書いたコードの単純化され、1ラインバージョンを使用しています。
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();
}
出力
もう1つのことは、一度に1つずつ入力したい場合は、ユーザーにループ内の新しい年を尋ねて、整数を入力した後に回答を与えます。ここで私はまた別の機能が有効な整数を入力するためにそれらを強制する、GetIntFromUser
と呼ばれる追加の例は、(それは1が入力されるまで尋ね続けて)です:
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