无法在 C# 中打印来自相同 class 的属性
Unable to print the properties from same class in c#
编写一个 C# 程序,获取一个人的出生日期作为输入并计算 his/her 年龄并显示年龄。该程序还应检查此人是否是成年人或 child。
显示示例输出中给定的结果。
创建一个名为 Person 的 class。
如下所示创建字段、属性和方法。enter image description here
从包含 Main 方法的 class 调用程序为 person 创建 objects,并显示 DisplayDetails 方法的详细信息。
注:
不要创建新的命名空间。
使用公共访问说明符创建 classes。
严格遵守命名约定。
样本输入:1
输入名字
爱丽丝
输入姓氏
摩西
以yyyy/mm/dd/格式输入出生日期
1998/12/23
示例输出:1
名字:爱丽丝
姓氏:摩西
年龄:19
成人
样本输入:2
输入名字
乔
输入姓氏
诺埃尔
以yyyy/mm/dd/格式输入出生日期
2002/10/15
示例输出:2
名字:爱丽丝
姓氏:摩西
年龄:17
Child
当我尝试 运行 下面的代码时,它没有打印阶段,即成人或 child,我不明白我在这里做错了什么。
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();
}
}
}
您从未设置 'stages' 字段。
这里可能还有一些其他问题,因为只比较年份的日期不准确,会导致将年龄四舍五入到年份。除此之外,您可以通过进行一些小改动来获得正确打印的内容。
您可以将 Adult 值设置为“”或 String.Empty,这将导致您的 setter 逻辑被执行。然后,这将为阶段变量提供一个可以打印到控制台的值。
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
{}
}
对于主要 class,我使用了一个空字符串来为 Adult 属性 赋值。
obj.Dob = Convert.ToDateTime(Console.ReadLine());
obj.Adult = "";
obj.DisplayDetails();
Ouput Window
编写一个 C# 程序,获取一个人的出生日期作为输入并计算 his/her 年龄并显示年龄。该程序还应检查此人是否是成年人或 child。 显示示例输出中给定的结果。 创建一个名为 Person 的 class。 如下所示创建字段、属性和方法。enter image description here
从包含 Main 方法的 class 调用程序为 person 创建 objects,并显示 DisplayDetails 方法的详细信息。
注:
不要创建新的命名空间。
使用公共访问说明符创建 classes。
严格遵守命名约定。
样本输入:1
输入名字
爱丽丝
输入姓氏
摩西
以yyyy/mm/dd/格式输入出生日期
1998/12/23
示例输出:1
名字:爱丽丝
姓氏:摩西
年龄:19
成人
样本输入:2
输入名字
乔
输入姓氏
诺埃尔
以yyyy/mm/dd/格式输入出生日期
2002/10/15
示例输出:2
名字:爱丽丝
姓氏:摩西
年龄:17
Child
当我尝试 运行 下面的代码时,它没有打印阶段,即成人或 child,我不明白我在这里做错了什么。
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();
}
}
}
您从未设置 'stages' 字段。
这里可能还有一些其他问题,因为只比较年份的日期不准确,会导致将年龄四舍五入到年份。除此之外,您可以通过进行一些小改动来获得正确打印的内容。
您可以将 Adult 值设置为“”或 String.Empty,这将导致您的 setter 逻辑被执行。然后,这将为阶段变量提供一个可以打印到控制台的值。
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
{}
}
对于主要 class,我使用了一个空字符串来为 Adult 属性 赋值。
obj.Dob = Convert.ToDateTime(Console.ReadLine());
obj.Adult = "";
obj.DisplayDetails();
Ouput Window