Loading...
kokoteofilov1 avatar kokoteofilov1 1 Точки

7. Andrey and Billiard - Objects and Classes

https://pastebin.com/uCeg5FRJ
Опитвам се да накарам задачата да работи, когато един клиент има няколко поръчки. Схващам логиката, но не мога да го напиша като хората. Гърми, когато влезе в проверката на ред 47( ако има клиент с това име, добави поръчката към неговата сметка).

Някой може ли да ми каже защо кода на ред 47 гърми, и как мога да го редактирам, така че да работи?

Тагове:
1
Programming Fundamentals 24/10/2017 21:49:15
MilenaSl avatar MilenaSl 161 Точки

Добави след 35-ти ред това:

                c.Purchase = new Dictionary<string, int>();

и ще спре да гърми. Винаги трябва да се инициализира нова колекция. Най-добре ще разбереш защо, ако пробраш да дебъгнеш с и без този ред и проследиш разликата в стойностите за Purchase. 

0
kokoteofilov1 avatar kokoteofilov1 1 Точки

За жалост пак гърми същото нещо на ред 48. Дава тази грешка: Unhandled Exception: System.ArgumentNullException: Value cannot be null. 

 

0
MilenaSl avatar MilenaSl 161 Точки

Имам следното преположение: В dictionary ключовете не могат да се повтарят, затова ако същия клиент си поръча същата напитка, не би трябвало да можеш да я добавих в речника. Решението, за което се сещам, е да ползваш List<Customer>

Ето го кода ти лееко преправен като за 100/100:

https://pastebin.com/UgzuScet

0
VasilValchanov avatar VasilValchanov 555 Точки

 

           else { 

                      customers[c.Name].Purchase.Add(order[1], int.Parse(order[2]));

                  }

Проблема за гърмежа е тук когато трябва да вкараш продукт на вече съществуващ ключ

 

c.Name на customer-a я инициялизираш в if-а и в else идва без стойност, следователно хвърля грешка понеже не съществува такъв ключ. Също така трябва да инициализираш Customer преди да адваш стойности

ето така няма да ти гърми -->

 customers[order[0]] = new Customer();
 customers[order[0]].Purchase.Add(order[1], int.Parse(order[2]));

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.