我需要在我的学生班中编写2个方法来执行以下操作
hasPassed()如果学生的年份标记> = 40或者,则应返回True 如果标记<40
,则为falsetoString()应返回包含摘要的单个字符串 课堂上的学生详情 例如 “12345 Basil Fawlty,19/08/1946”
这里是我对上述方法的代码,我对它的要求是什么正确的?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace CourseWork
{
public class Student
{
private static string firstname;
private string secondname;
private string dateofbirth;
private string course;
private int matricnumber;
private double yearmark;
public bool hasPassed()
{
if (yearmark >= 40)
return true;
else
return false;
}
public void toString()
{
firstname = "Basil";
secondname = "Fawlty";
dateofbirth = "23/08/1946";
course = "MA Hotel Management";
matricnumber = 12345;
yearmark = 55;
}
public Student()
{
}
public string FirstName
{
get { return firstname; }
set { firstname = value; }
}
public string SecondName
{
get { return secondname; }
set { secondname = value; }
}
public string DateOfBirth
{
get { return dateofbirth; }
set { dateofbirth = value; }
}
public string Course
{
get { return course; }
set { course = value; }
}
public int MatricNumber
{
get { return matricnumber; }
set
{
if (value <= 99999 && value >= 10000)
{
matricnumber = value;
}
else
{
Console.WriteLine("Invalid Matric Number: {0}", value);
}
matricnumber = value;
}
}
public double YearMark
{
set
{
if (value <= 100 && value >= 0)
{
yearmark = value;
}
else
{
Console.WriteLine("Invalid Year Mark: {0}", value);
}
yearmark = value;
}
}
}
然后我需要将上述方法用于执行以下操作的获取按钮
获取:使用Student类方法的值更新文本框。该 应使用Student.hasPassed()方法更新通过/失败标签。该 应使用Student.toString()更新学生详细信息摘要。
但是我在编写代码时遇到了麻烦,我无法从我的学生班调用hasPassed()方法或toString()方法
所以我做错了什么但是看不出它是什么 任何想法如何解决这个问题?
我有一个设置按钮,基本上可以让我保存学生课程中的更新vaules,虽然我不认为这保存他们正确,但不知道,直到我得到Get按钮工作我已经使用Student student = new student()in获取按钮中的设置按钮我需要使用toString方法在txt框和标签中显示例如12345 Basil Fawlty,23/08/194,然后我需要在Get按钮中使用hasPassed()方法当年标是> = 40时,另一个标签表示通过或失败,如果&lt; 40
答案 0 :(得分:1)
我没有完全阅读你的问题,因为有很多错误。
例如
public void toString()
{
firstname = "Basil";
secondname = "Fawlty";
dateofbirth = "23/08/1946";
course = "MA Hotel Management";
matricnumber = 12345;
yearmark = 55;
}
你的对象在哪里?
你应该像这样创建一个对象: 学生stu =新学生();
小心并且让你的问题更容易理解!
看看: https://stackoverflow.com/questions/902994/how-to-ask-programming-questions-correctly
答案 1 :(得分:1)
firstName变量是静态的。这将使Student的所有实例共享相同的名字,这是不正确的。每个Student对象都应该有自己的名字。
该类的实例变量是私有的,无法设置。您可能想要创建一个将这些变量作为参数的构造函数。
public Student(string firstName, string secondName, ...)
{
this.firstName = firstName;
this.secondName = secondName;
...
}
hasPassed()方法是正确的。您可以通过实例化Student类的实例并在实例化对象上调用hasPassed()来验证行为是否正常。
double goodYearMark = 85;
Student goodStudent = new Student("Basil", "Fawlty", ..., goodYearMark);
Console.WriteLine("Good Student Passed? " + goodStudent.hasPassed());
double badYearMark = 35;
Student badStudent = new Student("Bad", "Student", ..., badYearMark);
Console.WriteLine("Bad Student Passed? " + badStudent.hasPassed());
ToString()方法应该返回一个字符串值。 .NET中的每个对象都有一个ToString()方法,您可以使用override关键字覆盖默认行为。 请参阅MSDN documentation for the Object.ToString Method。
public override string ToString()
{
return string.format("{0} {1}, {2}", firstName, secondName, dateOfBirth);
}
上面的代码示例可能无法编译,因为我将它们直接输入到响应窗口中,但希望它们可以作为指导。希望这有帮助!
答案 2 :(得分:0)
再次阅读toString要求,你做错了。现在在代码中调用toString会对现有值产生什么影响?
另外,检查最后两个属性设置器。目前,您并未阻止用户设置无效值。
您还需要创建一个类的实例,并在其上设置可以从toString返回的初始值。
祝你好运,你几乎就在那里: - )