我已經用適當的東西對每一行進行了編碼,但是,當我從選單中選擇五個選項之一后進行測驗時收到一個錯誤,提示用戶選擇它來注冊狗等等。因此,我無法識別出我的代碼有任何錯誤,但我確實除錯并測驗了很多次。即使我檢查以確保每個案例都沒有重疊,但我不知道該怎么做。
Repeat 261929 times:
--------------------------------
at Dog.set_Name(System.String)
--------------------------------
at Dog..ctor(System.String, System.String, Int32, System.String)
at Program.<Main>$(System.String[])
班級:
public class Dog
{
public string Name { get
{
return Name;
}
set
{
Name = value;
}
}
public string Breed { get
{
return Breed;
}
set
{
Breed = value;
}
}
public int Age { get
{
return Age;
}
set
{
Age = value;
}
}
public string Vaccine { get
{
return Vaccine;
}
set
{
Vaccine = value;
}
}
//default constructor
public Dog()
{
Name = "N/A";
Breed = "N/A";
Age = -1;
string [] vaccine = new string[10];
}
//parameterized constructor
public Dog(string name, string breed, int age, string vaccine)
{
Name = name;
Breed = breed;
Age = age;
Vaccine = vaccine;
}
public string AddVaccine (string vaccine)
{
return vaccine;
}
}
目的:
//set size of the array for dogs and vaccines
Dog[] dogs = new Dog[20];
string [] vaccine = new string[10];
bool repeat = true;
while(repeat)
{
//show all menu
Console.WriteLine("1. Add a new dog\n2. Remove a dog\n3. Add Vaccine\n4. List all dogs\n5. Exit\n");
Console.Write("Selection: ");
int selection = int.Parse(Console.ReadLine());
switch(selection)
{
case 1:
//ask the user for the info about the car so we can add it to the object
Console.Write("Enter dog name: ");
string name = Console.ReadLine();
Console.Write("Enter dog breed: ");
string breed = Console.ReadLine();
Console.Write("Enter dog age: ");
int age = int.Parse(Console.ReadLine());
//finding an available location in the list
for(int i = 0; i < dogs.Length; i )
{
if(dogs[i] == null)
{
dogs[i] = new Dog(name, breed, age, string.Empty);
Console.WriteLine("Dog successfully added");
break;
}
}
break;
case 2:
Console.Write("Enter the dog name:");
string dogName = Console.ReadLine();
bool removed = false;
for(int i = 0; i< dogs.Length; i )
{
Dog dog = dogs[i];
if(dog!=null && dog.Name == dogName)
{
dog = null;
dogs[i] = dog;
removed = true;
Console.WriteLine("{0} was successful removed", dogName);
break;
}
if (!removed)
{
Console.WriteLine("{0} was not found", dogName);
}
}
break;
case 3:
Console.Write("Enter the dog name:");
string name2 = Console.ReadLine();
bool added = false;
for(int i = 0; i< dogs.Length; i )
{
Dog dog = dogs[i];
if(dog!=null && dog.Name == name2)
{
Console.Write("Enter the vaccine name:");
string vac = Console.ReadLine();
if(vac == null)
{
Console.WriteLine("Vaccine not added");
}
else
{
dog.Vaccine = vac;
added = true;
Console.WriteLine("{0} was successful added", vac);
break;
}
break;
}
if (!added)
{
Console.WriteLine("{0} was not found", name2);
}
}
break;
case 4:
bool listIsEmpty = true;
foreach(Dog dog in dogs)
{
if(dog != null)
{
ShowDogInfo(dog);
listIsEmpty = false;
}
}
if(listIsEmpty)
{
Console.WriteLine("No dogs in the list");
}
break;
case 5:
Console.WriteLine("Thank you for using Rochester Doggie System");
repeat = false;
break;
default:
Console.WriteLine("Invalid selection");
break;
}
}
void ShowDogInfo(Dog dog)
{
Console.WriteLine("Name: {0}", dog.Name);
Console.WriteLine("Breed: {0}", dog.Breed);
Console.WriteLine("Age: {0}", dog.Age);
Console.WriteLine("Vaccine: {0}", dog.Vaccine);
Console.WriteLine();
}
如果輸入被成功添加或洗掉,我期望結果將顯示 Console.WriteLine() 。如果用戶選擇 4,我也希望顯示所有狗串列,否則他們可以選擇 5(我已經測驗過,它可以在退出程式的情況下作業)。
我重新檢查了所有行,所以我看不出有任何問題,除非有人可能會發現我遺漏了一些東西。
uj5u.com熱心網友回復:
Name = value;:在setter中,你呼叫setter,它呼叫setter等。這會導致觀察到的堆疊溢位。
將您的屬性更改為自動屬性:
public class Dog
{
public string Name { get; set; }
// etc.
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/519796.html
標籤:C#循环目的方法开关语句
上一篇:python-從字典串列中提取值
下一篇:無限回圈?
