程序逻辑:程序循环工作——这样做是为了让鱼“变老”。在循环的每次迭代中,用户可以将其中一条鱼拉出水族箱,也可以将一条新鱼添加到水族箱中(问题由此产生)。根据我的想法,应该如何实现添加:用户输入鱼种(例如,Ancistrus)。这种特殊品种的新鱼正在被创造出来。(问题出现了——毕竟,有必要创建一个类的实例(一条新鱼),为此,有必要提前做这一切,但这只是对计算机的亵渎资源。那么如何制作它以便在用户的命令下创建一条鱼?)
代码中第一个突出显示的片段是一个函数,用户可以使用它向水族箱添加另一条鱼(在循环中完成 -> 可以重复多次)。然后有一个我无能为力的问题:用户想要添加鱼->您需要创建该类的另一个实例(当然具有唯一的名称)。
在以粗体突出显示的第二个片段中,向您展示了“AddFish()”函数本身,它还引用了一个名称相似的函数,但已经来自 Aquarium 类 - 该函数仅扩展数组并引入新的鳞片一个在那里。第二个突出显示的片段是问题。(不能用用户刚刚在命令行输入的名称来实例化一个类. 我可以随机命名类的新实例,但我认为这是不可能的。)事实上,要做什么,如何解决这个问题???
对于这个问题,我只想出了一个解决方案——提前创建许多类的实例(可以将它们保留为“null”值),当用户想要向水族箱添加某种鱼时,如果你愿意,想要的鱼会“变得活跃”、“从睡眠中醒来”……
'''c#
static void Main(string[] args)
{
int whatToDo;
string info;
Random random = new Random();
Ancistrus ancistrus = new Ancistrus();
Astronotus astronotus = new Astronotus();
Barbus barbus = new Barbus();
Guppy guppy = new Guppy(); //Все вышеперечисленные пользовательские
//классы наследованы от Fish.
Fish[] fishes = new Fish[] { ancistrus, astronotus, barbus, guppy };
Aquarium aquarium = new Aquarium(fishes); //В аквариум добавляются рыбы.
while (true)
{
Console.WriteLine("Аквариум запущен. Команды для взаимодействия:\n" +
"1 - продолжение жизни;\n" +
"2 - добавить в аквариум рыбу;\n" +
"3 - вытащить из аквариума рыбу;\n");
info = aquarium.GetInfo();
Console.WriteLine(info); //Выводит информацию о рыбах в аквариуме.
AgingAll(aquarium._fishes); //Здесь рыбы стареют на 1 год.
Int32.TryParse(Console.ReadKey().ToString(), out whatToDo);
switch(whatToDo) //2 - добавить рыбу, 3 - вытащить рыбу,
// любая другая клавиша - продолжить выполнение программы(рыбы просто постареют).
{
case 2:
**AddFish(aquarium);** //добавление рыбы в аквариум.
break;
case 3:
//RemoveFish();
break;
default:
break;
}
Console.Clear();
}
}
static void AddFish(Aquarium aquarium)
{
Console.Write("Рыбу с каким именем вы хотите добавить? ");
string nameNewFish = Console.ReadLine();
if (nameNewFish == Ancistrus.Breed) //Если имя, введенное пользователем аналогично породе Ancistrus, то...
**Ancistrus nameNewFish = new Ancistrus();** //проблема - как создать новый экземпляр
aquarium.AddFish(nameNewFish); //уже созданная рыба добавляется в аквариум.
}
'''
1 个回答