【问题标题】:call array function from a class to main class从类调用数组函数到主类
【发布时间】:2020-02-22 14:52:43
【问题描述】:

我正在尝试编写一个程序,让用户选择一些学生,然后让他输入他们的毕业生。这样我将创建public int numberOfStu=0 来存储学生的编号,并创建public double [] grad 来保存名为grade 的班级的成绩。 我有两个问题: 1-我无法使grad 的长度与numberOfStu 的值相同 这是我的代码:

class grade
{
     public int numberOfStu=0 ;
    double[] grad = new double [numberOfStu]; // here is error

    public grade()
    { }
    public grade(int numStu, double [] Grads){
        numberOfStu = numStu;
        grad = Grads;
    }
    public int number() {
        Console.Write("enter number of student:");
        return numberOfStu = Int16.Parse(Console.ReadLine());
    }
    public double [] Gread(int numberOfStu) {
        for (int i=0 ; i< numberOfStu; i++) {
            grad[i] = double.Parse(Console.ReadLine());
        }
        return grad;
    }
    public void print()
    {
        Console.WriteLine("Number of students are {0}", numberOfStu);
        for (int i = 0; i < numberOfStu; i++) {
            Console.WriteLine("Gread of studen {0} is {1}", i + 1, Gread[i]);
        }
    }
}

2- 我不知道如何在主类中调用 Gread 函数 throw it 数组函数。 这是主要代码:

    static void Main(string[] args)
    {
        grade gread1 = new grade();
        gread1.number();

        gread1.Grad(gread1.number()); //here is error
        gread1.print();
    }

【问题讨论】:

  • 数组的大小不能为0 - 这就是错误的含义。
  • 有什么错误?您是否已经尝试寻找错误的解决方案?
  • 使用 Arraylist 代替 double[]

标签: c# function class


【解决方案1】:

你可以试试这个稍微重构一下:

public class Grades
{

  private double[] _Items;

  public int Count
  {
    get
    {
      return _Items.Length;
    }
  }

  public Grades()
  {
  }

  public Grades(double[] grades)
  {
    _Items = grades;
  }

  public int Resize()
  {
    Console.Write("Enter number of students:");
    int.TryParse(Console.ReadLine(), out int count);
    if ( _Items == null )
      _Items = new double[count];
    else
      Array.Resize(ref _Items, count);
    return Count;
  }

  public double[] Initialize(int count)
  {
    if ( _Items == null )
      _Items = new double[count];
    else
      Array.Resize(ref _Items, count);
    for ( int i = 0; i < _Items.Length; i++ )
    {
      Console.WriteLine("Enter grade of student {0}:", i + 1);
      double.TryParse(Console.ReadLine(), out _Items[i]);
    }
    return _Items;
  }

  public void Print()
  {
    if ( _Items == null )
      Console.WriteLine("There is no students.");
    else
    {
      Console.WriteLine("Number of students are {0}", _Items.Length);
      for ( int i = 0; i < _Items.Length; i++ )
        Console.WriteLine("Grade of student {0} is {1}", i + 1, _Items[i]);
    }
  }

}
static void Test()
{
  var g = new Grades();
  g.Initialize(5);
  g.Print();
}

结果:

Enter grade of student 1:
1
Enter grade of student 2:
2
Enter grade of student 3:
3
Enter grade of student 4:
4
Enter grade of student 5:
5
Number of students are 5
Grade of student 1 is 1
Grade of student 2 is 2
Grade of student 3 is 3
Grade of student 4 is 4
Grade of student 5 is 5

您可以将Grades 重命名为Students,将_Items 重命名为_Grades

【讨论】:

  • 你使用了一些奇怪的代码,但我对它们很感兴趣。我从你那里学到了很多东西。谢谢你的帮助:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-09
  • 2012-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-01
相关资源
最近更新 更多