在星期天(C#)形成一条空线 使用系统; 使用System.Text.RegularExpressions; 名称空间日历 { 班级计划 { 静态void Main() { 国际年; 国际日; 字符串[]月=新字符串[]{“一月”、“二月”、“三月”、“四月”、“五月”、“六月”、“七月”、“八月”、“九月”、“十月”、“十一月”、“十二月”}; int[]天=新int[]{31,28,31,30,31,30,31,31,30,31,31}; Console.Write(“输入您希望生成日历的年份>>”; int.TryParse(Console.ReadLine(),out year);//验证// Console.Write(“输入1月1日在>>上的星期几”); int.TryParse(Console.ReadLine(),out day);//验证// while(day>31 | | day>”; Console.Write(“输入1月1日在>>上的星期几”); int.TryParse(Console.ReadLine(),out day);//验证// } switch(LeapYear(year))//switch语句检查闰年是否为真// { 大小写正确: 天数[1]+=1; Console.WriteLine(“日历年-{0}”,年份); for(int i=0;i
首先,我必须说,您的操作过于复杂,有一个现成的完美日期库,您可以使用它。 例如:在星期天(C#)形成一条空线 使用系统; 使用System.Text.RegularExpressions; 名称空间日历 { 班级计划 { 静态void Main() { 国际年; 国际日; 字符串[]月=新字符串[]{“一月”、“二月”、“三月”、“四月”、“五月”、“六月”、“七月”、“八月”、“九月”、“十月”、“十一月”、“十二月”}; int[]天=新int[]{31,28,31,30,31,30,31,31,30,31,31}; Console.Write(“输入您希望生成日历的年份>>”; int.TryParse(Console.ReadLine(),out year);//验证// Console.Write(“输入1月1日在>>上的星期几”); int.TryParse(Console.ReadLine(),out day);//验证// while(day>31 | | day>”; Console.Write(“输入1月1日在>>上的星期几”); int.TryParse(Console.ReadLine(),out day);//验证// } switch(LeapYear(year))//switch语句检查闰年是否为真// { 大小写正确: 天数[1]+=1; Console.WriteLine(“日历年-{0}”,年份); for(int i=0;i,c#,windows,date,calendar,C#,Windows,Date,Calendar,首先,我必须说,您的操作过于复杂,有一个现成的完美日期库,您可以使用它。 例如: using System; using System.Text.RegularExpressions; namespace calendar { class Program { static void Main() { int year; int day; string[] month = ne
using System;
using System.Text.RegularExpressions;
namespace calendar
{
class Program
{
static void Main()
{
int year;
int day;
string[] month = new string[] { "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" };
int[] days = new int[] { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
Console.Write("Enter the year for which you wish to generate the calendar >> ");
int.TryParse(Console.ReadLine(), out year); // Validate //
Console.Write("Enter the day of the week that January first is on >> ");
int.TryParse(Console.ReadLine(), out day); // Validate //
while (day > 31 || day < 1) // Reprompt for value if date is out of range //
{
Console.WriteLine("Enter a valid date >> ");
Console.Write("Enter the day of the week that January first is on >> ");
int.TryParse(Console.ReadLine(), out day); // Validate //
}
switch (LeapYear(year)) // Switch statement checks if Leap Year is true //
{
case true:
days[1] += 1;
Console.WriteLine("Calendar for year - {0}", year);
for (int i = 0; i < month.Length; i++)
{
Console.WriteLine("\n" + month[i]);
day = DisplayCalender(days[i], day);
Console.Write("\n");
}
break;
}
}
public static int DisplayCalender(int days, int start) //Display Function//
{
int startDay = start;
Console.WriteLine("Sun\tMon\tTue\tWed\tThu\tFri\tSat");
for (int i = 0; i < start; i++)
Console.Write("\t");
for (int i = 1; i <= days; i++)
{
if (startDay > 6)
{
startDay = 0;
Console.WriteLine();
}
Console.Write(i + "\t");
startDay++;
}
return startDay;
}
public static Boolean LeapYear(int year)
{
if ((year % 400 == 0) || ((year % 4 == 0) && !(year % 100 == 0))) // Checks each OR AND statements and return true or false //
{
return true;
}
else
return false;
}
}
}
与此相反:
DateTime now = DateTime.Now;
bool isLeapYear = DateTime.IsLeapYear(now.Year);
int daysInCurrentMonth = DateTime.DaysInMonth(now.Year, now.Month);
Console.WriteLine("Sun\tMon\tTue\tWed\tThu\tFri\tSat");
if (start < 7)
{
for (int i = 0; i < start; i++)
{
Console.Write("\t");
}
}
这样做:
if (startDay > 6)
{
startDay = 0;
Console.WriteLine();
}
所以DisplayCalendar方法应该如下所示:
if (startDay > 6)
{
startDay = 0;
if (i!=1)
{
Console.WriteLine();
}
}
public static int-displayCalendar(int-days,int-start)//显示功能//
{
int startDay=开始;
Console.WriteLine(“Sun\tMon\tTue\tWed\tThu\tFri\tSat”);
如果(开始<7)
{
对于(int i=0;i
我想你所描述的问题是,从周日开始的一个月会让日历跳过一整行。如图所示:
这是因为您的方法publicstaticintdisplaycalender(intdays,intstart)
正在接收值为7的参数intstart
。
这使得你在第一个中为
写下一周的标签,然后在第二个中为
跳过这一行
要解决此问题,您只需在7
时将startDay
重新指定为零,然后在选项卡上检查startDay
而不是start
:
public static int DisplayCalender(int days, int start) //Display Function//
{
int startDay = start;
Console.WriteLine("Sun\tMon\tTue\tWed\tThu\tFri\tSat");
if (start < 7)
{
for (int i = 0; i < start; i++)
{
Console.Write("\t");
}
}
for (int i = 1; i <= days; i++)
{
if (startDay > 6)
{
startDay = 0;
if (i != 1 )
{
Console.WriteLine();
}
}
Console.Write(i + "\t");
startDay++;
}
return startDay;
}
public static int-displayCalendar(int-days,int-start)//显示功能//
{
int startDay=start==7?0:开始;
Console.WriteLine(“Sun\tMon\tTue\tWed\tThu\tFri\tSat”);
对于(int i=0;i
这将为您提供预期的结果:
您可以从这里改进什么?
从头开始做这些可能会让你学到很多关于循环和流的知识。如果你有时间,请查查。
在这里,您可以找到闰年、星期几和月份。这将帮助您大大简化代码
欢迎来到StackOverflow 为什么不使用DateTime
来确定某一年的一月一日是星期几?还有,一周中的一天怎么可能在1到31之间,不是应该是1到7吗?
public static int DisplayCalender(int days, int start) //Display Function//
{
int startDay = start;
Console.WriteLine("Sun\tMon\tTue\tWed\tThu\tFri\tSat");
if (start < 7)
{
for (int i = 0; i < start; i++)
{
Console.Write("\t");
}
}
for (int i = 1; i <= days; i++)
{
if (startDay > 6)
{
startDay = 0;
if (i != 1 )
{
Console.WriteLine();
}
}
Console.Write(i + "\t");
startDay++;
}
return startDay;
}
public static int DisplayCalender(int days, int start) //Display Function//
{
int startDay = start == 7 ? 0 : start;
Console.WriteLine("Sun\tMon\tTue\tWed\tThu\tFri\tSat");
for (int i = 0; i < startDay; i++)
Console.Write("\t");
for (int i = 1; i <= days; i++)
{
if (startDay > 6)
{
startDay = 0;
Console.WriteLine();
}
Console.Write(i + "\t");
startDay++;
}
return startDay;
}