如何解决无法在 c#
编写一个 C# 程序,输入一个人的出生日期,计算他/她的年龄并显示年龄。该程序还应检查此人是成人还是儿童。 显示示例输出中给出的结果。 创建一个名为 Person 的类。 创建如下所示的字段、属性和方法。enter image description here
从包含 Main 方法的名为 Program 的类为 person 创建对象,并从 displayDetails 方法显示详细信息。
注意:
不要创建新的命名空间。
使用公共访问说明符创建类。
严格遵循命名约定。
样本输入:1
输入名字
爱丽丝
输入姓氏
摩西
以 yyyy/mm/dd/ 格式输入出生日期
1998/12/23
样本输出:1
名字:爱丽丝
姓氏:摩西
年龄:19
成人
样本输入:2
输入名字
乔
输入姓氏
诺尔
以 yyyy/mm/dd/ 格式输入出生日期
2002/10/15
样本输出:2
名字:爱丽丝
姓氏:摩西
年龄:17
孩子
当我尝试运行以下代码时,它没有打印阶段,即成人或儿童,我不明白我在这里做错了什么。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace C_SHARP
{
public class Person
{
private String firstName;
private String lastName;
private DateTime dob;
private String stages;
public String FirstName
{
get
{
return firstName;
}
set
{
firstName = value;
}
}
public String LastName
{
get
{
return lastName;
}
set
{
lastName = value;
}
}
public DateTime dob
{
get
{
return dob;
}
set
{
dob = value;
}
}
public String Adult
{
get
{
return stages;
}
set
{
if (GetAge(dob) > 18)
{
stages = "Adult";
}
else
{
stages = "Child";
}
}
}
public void displayDetails()
{
Console.WriteLine("First Name: " + this.firstName);
Console.WriteLine("Last Name: " + this.lastName);
Console.WriteLine("Age: "+this.GetAge(dob));
Console.WriteLine(this.stages);
}
public int GetAge(DateTime dob)
{
int age = 0;
age = DateTime.Now.Year - dob.Year;
return age;
}
}
public class Progarm
{
public static void Main(String[] args)
{
Person obj = new Person();
Console.WriteLine("Enter first name");
obj.FirstName = Console.ReadLine();
Console.WriteLine("Enter last name");
obj.LastName = Console.ReadLine();
Console.WriteLine("Enter date of birth in yyyy/mm/dd/ format");
obj.dob = Convert.ToDateTime(Console.ReadLine());
obj.displayDetails();
}
}
}
解决方法
您从未设置“阶段”字段。
,此处可能存在其他一些问题,因为仅按年份比较的日期不准确,导致将年龄四舍五入到年份。除此之外,您可以通过进行一些小的更改来获得正确打印的内容。
您可以将 Adult 值设置为 "" 或 String.Empty,这将导致执行您的 setter 逻辑。然后,这将为 stage 变量提供一个您可以打印到控制台的值。
obj.Dob = Convert.ToDateTime(Console.ReadLine());
obj.Adult = String.Empty;
obj.DisplayDetails();
,
这个现在工作正常,它通过了 100% 的测试用例。
public String Adult
{
get
{
if (GetAge(dob) >= 18)
{
return "Adult";
}
else
{
return "Child";
}
}
set
{}
}
对于主类,我使用空字符串为 Adult 属性赋值。
obj.Dob = Convert.ToDateTime(Console.ReadLine());
obj.Adult = "";
obj.DisplayDetails();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。