1

我正在尝试使用 C# 完成这两个目标。我错过了解释如何用对象填充数组的课程,所以我真的没有起点如何做第二个目标。

"1. 创建一个Student类,有两个字段StudentName(string)和StudentNumber(int),适当的属性(即get和set)和构造函数(default和non-default)。学生名将默认为空字符串,而学号将默认为 -1。

  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 数组。

我束手无策,试图在这里找到一个起点。任何人?

4

3 回答 3

1

使用 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 });
于 2012-12-07T06:56:35.857 回答
0

在 main 方法中,您可以创建学生对象数组。

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();
}

根据 OP 的评论添加更多代码以进一步解释

假设在您的学生课堂上一切正常,那么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
于 2012-12-07T07:02:50.220 回答
-1
Import TerminalIO.*;
Import BreezySwing.*;

Insert Codes here 
Insert Hacks here
Insert JavaScript here
int CR;
CR=reader.readln("Import TerminalIO")
System.out.println(" +CR+ ")
于 2013-04-12T16:04:22.503 回答