簡體   English   中英

調用數組 function 從 class 到主 class

[英]call array function from a class to main class

我正在嘗試編寫一個程序,讓用戶選擇一些學生,然后讓他輸入他們的畢業生。 這樣我將創建public int numberOfStu=0來存儲學生的數量和public double [] grad以將成績保存在名為grade的 class 中。 我有兩個問題: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-我不知道如何在主 class 中調用Gread function 扔它數組 function。 這是主要代碼:

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

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

您可以嘗試對此進行一些重構:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM