【发布时间】:2020-04-14 16:35:12
【问题描述】:
class Program
{
static void Main(string[] args)
{
//Declare Variables
string name;
string breed;
string colour;
string gender;
string userChoice;
bool proceed;
//Initialize Variables
name = "";
breed = "";
colour = "";
gender = "";
proceed = true;
numberOfDogs = 0;
Dogs dogList = new Dogs();
do
{
Console.Write("Main Menu\n");
Console.WriteLine("--------------------------------------------------------");
Console.WriteLine("1. Display the name, breed, colour, and gender of the dog (if one already exists)");
Console.WriteLine("2. Add a new dog");
Console.WriteLine("3. Edit an existing dog");
Console.WriteLine("4. Exit the program");
userChoice = Console.ReadLine();
switch (userChoice)
{
case "A":
case "a":
{
dogList.Display();
break;
}
case "B":
case "b":
{
Console.Clear();
Console.Write("Please enter the dog's name: ");
name = Console.ReadLine();
Console.Write("Please enter the breed of the dog: ");
breed = Console.ReadLine();
Console.Write("Please enter the colour of the dog: ");
colour = Console.ReadLine();
Console.Write("Please enter the dog's gender: ");
gender = Console.ReadLine();
dogList = new Dogs(name, breed, colour, gender);
break;
}
case "C":
case "c":
{
dogList.Display();
dogList = new Dogs();
break;
}
case "D":
case "d":
{
proceed = false;
break;
}
}
} while (proceed);
}
}
}
我有另一个正在使用的代码,但我的老师希望我在这个设置中使用它。 当我运行她的示例时,它说了同样的话……有人知道问题出在哪里吗?
我已经看过很多遍了,但我似乎无法弄清楚。 我是编码的初学者,所以有时很难解决问题...... 我已经给老师发了电子邮件,让她知道这个例子,但她还没有回复我。 如果有人可以帮助我,我将不胜感激!
class Dogs
{
//Declare Dog Variables
string name;
string breed;
string colour;
string gender;
public Dogs()
{
name = null;
breed = null;
colour = null;
gender = null;
Dogs dogList = new Dogs();
}
public Dogs(string dogName, string dogBreed, string dogColour, string dogGender)
{
name = dogName;
breed = dogBreed;
colour = dogColour;
gender = dogGender;
}
public void Display()
{
if (name == null || breed == null || colour == null || gender == null)
{
Console.Write("No dog record exists");
}
else
{
Console.WriteLine("The dogs name is: " + name);
Console.WriteLine("The breed of the dog is: " + breed);
Console.WriteLine("The colour of the dog is: " + colour);
Console.WriteLine("The dogs gender is: " + gender);
}
}
}
}
【问题讨论】:
-
请发狗类
-
我加了,谢谢。
-
我认为这是由于您的构造函数中的 dogList 属性,每次创建一个时,您都会创建一个再次调用构造函数的子属性
-
因此,当您在 ctor 中构建一个新的狗类时,您会创建另一个狗类,因此它会继续创建新的狗类,因此您有一个 stackoverflow
-
太棒了!!!我只需要完成项目的编码,现在应该可以解决了!!非常感谢!!!
标签: c# stack-overflow