我不能自己解决这个问题,我的教授没有时间给我演示。不是他的错。我想了解尽可能多的概念,所以我真的不喜欢跳过理论和实践。这个问题应该使用DateTime,使用转换/解析方法,甚至创建子字符串来解决吗?到目前为止,我们在课堂上都没有提到DateTime或substring,我真的很困惑。请,如果有人可以解释这一点更详细,或显示一些代码,我将非常感激。
问题(c#):
用户使用键盘以YYYYMMDD的形式输入日期,例如20201030,代表30.10.2020。需要创建一个函数,该函数将给定的日期YYYYMMDD转换为日期格式DD.MM.YYYY。如果用户输入中包含字母,或者输入的月份大于12,或者输入的天数大于31,则需要显示"输入的日期类型错误"。没有必要详细检查每个月的天数
日期(在"某一时刻"的意义上)没有格式,因此我们可以合理地将规范转换为日期格式DD.MM.YYYY,作为"一个包含两位数日、两位数月和四位数年的字符串">
我们也不需要使用date类;我们可以将字符串分割,尝试将其转换为数字(捕获字母错误数据条目)并检查数字是否在范围内(捕获12和31)
更复杂的是,我们不需要生成一个有效的日期,因为它不需要非常涉及检查每月的天数
因此你可以使用…
…像这样获取用户输入:
string input = Console.ReadLine();
…像这样的东西来切断你的日期字符串:
string monthString = input.Substring(4,2);
…像这样把它转换成一个数字:
int monthNum;
bool successMonth = int.TryParse(monthString, out monthNum);
…像这样检查月份中是否有字母或者月份超出范围:
if(!successMonth || monthNum > 12)
…如果所有的检查都通过了,那么像这样的代码可以将分割的字符串重新塑造成不同的格式:
string result = dayString + "." + monthString + "." + yearString;
我还没有帮你完成所有的作业;你必须把这些基本的东西拿出来,然后从中构建一个实际的解决方案……首先拿起笔和纸坐下来,写出算法(一组步骤),然后将其作为编写代码的计划。考虑先将算法转换为注释,然后在下面编写代码:
//print a message asking for user input in YYYYMMDD
//read the user input
//cut the year out
//cut the month out
...
等等