Если дней больше 30 (31) и и февраль больше 28 (29), необходимо генерировать исключения - C#
Формулировка задачи:
Программа вычисляет порядковый день в году с учетом високосного года. Если дней больше 30 (31) и и февраль больше 28(29), необходимо генерировать исключения. Но в программе неправильно генерируются исключения, например, можно ввести 30 апреля и сгенерируется исключение, а можно и ввести 29 февраля не високосного года и исключения не будет. Помогите, пожалуйста, разобраться!)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace _1Б_задание_4
{
class Data
{
public double Year { get; set; }
public double Month { get; set; }
public double Day { get; set; }
public void setYear(double y)
{
Year = y;
if (y < 1600)
{
throw new System.ArgumentException("Parameter cannot be null", "original");
}
}
public void setMonth(double m)
{
Month = m;
if (m > 12)
{
throw new System.ArgumentException("Parameter cannot be null", "original");
}
}
public void setDay(double d)
{
Day = d;
if ((d > 30) && (Month == 4))
if ((d > 30) && (Month == 6))
if ((d > 30) && (Month == 9))
if ((d > 30) && (Month == 11))
if ((d > 31) && (Month == 1))
if ((d > 31) && (Month == 3))
if ((d > 31) && (Month == 5))
if ((d > 31) && (Month == 7))
if ((d > 31) && (Month == 8))
if ((d > 31) && (Month == 10))
if ((d > 31) && (Month == 12))
{
throw new System.ArgumentException("Parameter cannot be null", "original");
}
if ((((Year % 4) == 0) && (Month == 2)) || (Day > 29))
if ((((Year % 4) == 1) && (Month == 2)) || (Day > 28))
if ((((Year % 4) == 2) && (Month == 2)) || (Day > 28))
if ((((Year % 4) == 3) && (Month == 2)) || (Day > 28))
{
throw new System.ArgumentException("Parameter cannot be null", "original");
}
}
static void Main()
{
int[] myArr = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
int i;
double t = 0;
double t1;
Data data1 = new Data();
Console.WriteLine("Введите год");
double y = Convert.ToDouble(Console.ReadLine());
data1.setYear(y);
Data data2 = new Data();
Console.WriteLine("Введите месяц");
double m = Convert.ToDouble(Console.ReadLine());
data2.setMonth(m);
Data data3 = new Data();
Console.WriteLine("Введите день");
double d = Convert.ToDouble(Console.ReadLine());
data3.setDay(d);
if ((y % 4) == 0)
{
myArr[2] = 29;
for (i = 0; i < m; i++)
{
t = t + myArr[i];
}
t1 = t + d;
Console.WriteLine(t1);
}
else
{
for (i = 0; i < m; i++)
{
t = t + myArr[i];
}
t1 = t + d;
Console.WriteLine(t1);
}
}
}
}Решение задачи: «Если дней больше 30 (31) и и февраль больше 28 (29), необходимо генерировать исключения»
textual
Листинг программы
if ((d > 30) && (Month == 4))
if ((d > 30) && (Month == 6))
if ((d > 30) && (Month == 9))
if ((d > 30) && (Month == 11))
if ((d > 31) && (Month == 1))
if ((d > 31) && (Month == 3))
if ((d > 31) && (Month == 5))
if ((d > 31) && (Month == 7))
if ((d > 31) && (Month == 8))
if ((d > 31) && (Month == 10))
if ((d > 31) && (Month == 12))
{
throw new System.ArgumentException("Parameter cannot be null", "original");
}