[英]Having trouble passing info into an array, in a separate class
****第二编辑****找出错误处理。 但是输出有新问题。 无论输入什么,数组的所有索引都为零。 唯一保留的索引是最后一个。 例如:您本周学习的小时数如下:星期日:0星期一:0星期二:0星期三:0星期四:0星期五:0星期六:(无论用户输入的最后数字是多少...这是唯一保存的索引)
我在参数和方法上遇到很多麻烦。 我不知道应该去哪里。 对我来说感觉很陌生。 无论如何,这是一项家庭作业,但它却很小。 我希望我能得到一些指导,而不会像过去一样被贬低……当调用EnterHours时,我会收到一个“ NullReferenceException”。
public class StudentUI
{
int myHours;
private string[] days = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
public StudentUI()
{
}
public void MainMethod()
{
Student my = new Student();
Console.WriteLine("Please enter your name:\t ");
my.Name = Console.ReadLine();
Console.WriteLine("Please enter your student ID number:\t ");
my.ID = int.Parse(Console.ReadLine());
FillHours(my);
this.DisplayData(my);
this.DisplayAverage(my);
}
public void FillHours(Student my)
{
for (int i = 0; i < this.days.Length; i++)
{
Console.Write("Enter the number of hours that you studied ITDEV-115 on {0}:\t ", this.days[i]);
myHours = int.Parse(Console.ReadLine());
my.EnterHours(i, myHours);
}
}
public void DisplayAverage(Student my)
{
Console.Write("\n\nThe average number of hours studied per day was {0:N2}", my.CalculateAverage());
}
public void DisplayData(Student my)
{
double[] numHours = new double[this.days.Length];
Console.Clear();
Console.WriteLine("\n\n\nName: {0}", my.Name);
Console.WriteLine("ID: {0}", my.ID);
Console.WriteLine("\n\nThe number of hours of study that you did during the week are as follows:");
numHours = my.GetNumHours();
for (int i = 0; i < this.days.Length; i++)
{
Console.Write("\t{0}:", this.days[i]);
Console.WriteLine("\t{0:N2}", numHours[i]);
}
}
}
public class Student
{
private int id;
private string name;
private double[] hours;
public void EnterHours(int index, int myHours)
{
hours[index] = myHours;
}
public double[] GetNumHours()
{
return this.hours;
}
public double CalculateAverage()
{
double num = 0;
foreach (double number in this.hours)
{
num += number;
}
return (num / ((double)this.hours.Length));
}
}
实例字段private double[] hours;
最初为null
,在这种情况下您不能设置它的条目。
您需要创建一个实际的数组对象。
您必须在某些地方执行hours = new double[length]
,其中length
是要创建的新数组的长度。
你可以这样
class StudentUI{
int myHours;
private string[] days = { "Sunday", "Monday", "Tuesday", "Wednesday",
"Thursday", "Friday", "Saturday" };
public StudentUI()
{ }
public void MainMethod(){
Student my = new Student(days.length);
Console.WriteLine("Please enter your name:\t ");
my.Name = Console.ReadLine();
Console.WriteLine("Please enter your student ID number:\t ");
my.ID = int.Parse(Console.ReadLine());
FillHours(my);
this.DisplayData(my);
this.DisplayAverage(my);
}
public void FillHours(Student my){
for (int i = 0; i < this.days.Length; i++){
Console.Write("Enter the number of hours that you studied ITDEV-115 on {0}:\t ", this.days[i]);
myHours = int.Parse(Console.ReadLine());
my.EnterHours(i, myHours);
}
}
class Student{
private int id;
private string name;
private double[] hours;
public student(int size)
{
hours = new double[size];
}
public void EnterHours(int index, int myHours)
{
hours[index] = myHours;
}
数组的长度是固定的,因此您需要在分配任何值之前定义其大小。 如果您查看Student类的构造函数,我已经通过了几天的长度,该长度被用作数组的大小。 希望这可以帮助。
我从数组转换为列表。
using System;
using System.Collections.Generic;
class StudentUI {
int myHours;
private string[] days = { "Sunday", "Monday", "Tuesday", "Wednesday",
"Thursday", "Friday", "Saturday" };
public StudentUI() { }
public static void Main (string[] args) {
Student my = new Student();
Console.WriteLine("Please enter your name:\t ");
my.Name = Console.ReadLine();
Console.WriteLine("Please enter your student ID number:\t ");
my.ID = int.Parse(Console.ReadLine());
var StudentUI = new StudentUI();
StudentUI.FillHours(my);
// DisplayData(my);
// DisplayAverage(my);
}
public void FillHours(Student my) {
for (int i = 0; i < this.days.Length; i++) {
Console.Write("Enter the number of hours that you studied ITDEV-115 on {0}:\t ", this.days[i]);
myHours = int.Parse(Console.ReadLine());
my.EnterHours(i, myHours);
}
}
}
public class Student {
public int ID;
public string Name;
private List<int> Hours = new List<int>();
public void EnterHours(int index, int myHours) {
Hours.Add(myHours);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.