我试图用C#来完成这两个目标。我错过了解释如何用对象填充数组的课程,所以我没有真正的起点来完成第二个目标。
"1.创建一个Student类,它有两个字段,StudentName(string)和StudentNumber(int),适当的属性(即get和set)和构造函数(默认和非默认)。学生名称将默认为空字符串,而学生编号将默认为-1。
- 使用Student类解决以下问题。创建一个程序,允许用户将最多24名学生输入到一个数组中,确保学生编号恰好为5位数。输入所有学生后,允许用户按姓名或号码顺序搜索学生。如果找到,则显示完整的学生姓名和号码,如果没有,则显示错误消息。允许用户继续搜索,直到他们决定退出为止。">
我开始工作的第一部分,这是我的学生班:
class Student
{
// fields
private string _studentName;
private int _studentNumber;
// properties
public string studentName
{
get
{
return _studentName;
}
set
{
studentName = value;
}
}
public int studentNumber
{
get
{
return _studentNumber;
}
set
{
studentNumber = value;
}
}
// constructors
// default - no parameters
public Student()
{
_studentName = "";
_studentNumber = -1;
}
// non default - takes perameters
public Student(string studentName, int studentNumber)
{
_studentName = studentName;
_studentNumber = studentNumber;
}
}
这是我的主要程序:
class Program
{
static void Main(string[] args)
{
////////////// Question 1 ////////////////
// create new student
Student defaultStudent = new Student();
// display student
InputOutput.DisplayStudentInformation(defaultStudent);
// keep console open
Console.ReadLine();
}
}
现在我遇到了目标第二部分的问题。我不知道如何使用Object(student)类来帮助我创建一个用户输入的数组,因为我错过了那个特定的讲座。
我不是要求别人帮我完成整个作业,我只是不知道如何用用户输入的studentName和studentNumber填充数组。
我已经无计可施了,想在这里找到一个起点。任何人
使用Console.ReadLine()从控制台应用程序获取输入。请参阅:http://msdn.microsoft.com/en-us/library/system.console.readline.aspx.
一旦你有了名字和号码并进行了验证,创建学生对象并添加到数组中
List<Student> students = new List<Student>();
Console.WriteLine("Enter name:");
string nameInput = Console.ReadLine();
// alternative is to generate own student number
Console.WriteLine("Enter number:");
string numberInput = Console.ReadLine();
// perform validations then create Student
int number;
// check result of TryParse
int.TryParse(numberInput, out number);
students.Add(new Student { Number = number, Name = nameInput });
在main方法中,您可以创建Student Object数组。
Student[] ourStudents = new Student[24]; // declared an array of stduent objects
您可以使用For
循环来迭代,以使用另一个可能包含学生编号和姓名的数组来填充每个学生对象。否则,您可以将这些对象绑定到控制台输入/表单文本框:)
手动填充每个对象:
ourStduents[0].Number = 12345;
ourStudents[0].Name = "John Kent";
请忽略Form
的部分,因为您正在控制台窗口中进行所有工作。
for (int i = 0; i<24; i++) //just user the static array length
{
myStudents[i].Number = Console.ReadLine();
myStudents[i].Name = Console.ReadLine();
}
添加更多代码以根据操作人员的评论进行进一步解释
假设你的学生班一切顺利,那么main
班就来了。
using System;
namespace array_sample
{
class StudentData
{
static void Main(string[] args)
{
Regex num = new Regex(@"^d{5}$");
Student[] ourStudents = new Student[24];
// declared an array of stduent objects
for (int i = 0; i < 24; i++)
{
Console.WriteLine("Enter your Student Number :");
Match n = num.Match(Console.ReadLine());
if (n.Value != "")
{
ourStudents[i].Number = Int32.Parse(Console.ReadLine());
// make sure to convert to integer
Console.WriteLine("Enter your Name :");
ourStudents[i].Name = Console.ReadLine();
}
Else
{
Console.WriteLine("Number Can only be 5 digits");
if (i > 0)
{i = i - 1;}
else
{i = 0;}
}
} // end of input loop
for(i=0; i<24; i++)
{
Console.WriteLine("Number : " + ourStudents[i].Number +'t' + "Name :"
+ ourStudents[i].Name);
}// end of output loop
Console.ReadLine();
}
}// end of class
} // end of namespace
Import TerminalIO.*;
Import BreezySwing.*;
Insert Codes here
Insert Hacks here
Insert JavaScript here
int CR;
CR=reader.readln("Import TerminalIO")
System.out.println(" +CR+ ")