Как обработать исключение на одинаковые вхождения в sorted dictionary? - C#

Узнай цену своей работы

Формулировка задачи:

Добрый вечер, помогите пожалуйста правильно использовать исключение ExistExceptions, оно должно срабатывать в если студент с такой фамилией и именем уже есть в списке. когда я пытаюсь внести в sorted dictionary, то получаю ошибку, т.к. такой ключ уже есть. Но как-то не могу понять, куда и как правильно обработать это исключение.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Hometask10
{
 
    class Student
    {
        public string Name { get; set; }
        public string Lastname { get; set; }
 
        public Student(string name, string lastname)
        {
            this.Name = name;
            this.Lastname = lastname;
        }
 
        public class CompareByLastname : IComparer<Student>
        {
            public int Compare(Student x, Student y)
            {
 
                try
                {
                    if ((x.Lastname == y.Lastname) & (x.Name == y.Name))
                    {
                        throw new ExistExceptions();
                    }
                    else
                    {
                        if (x.Lastname == y.Lastname)
                        {
                            return String.Compare(x.Name, y.Name);
                        }
                        return String.Compare(x.Lastname, y.Lastname);
                    }
 
                }
                catch (ExistExceptions ee)
                {
                    Console.WriteLine("{0}", ee.Message);
                    return 0;
                }
            }
        }
    }
 
    class RangeException : Exception
    {
        public override string Message
        {
            get
            {
                return "Range Exception";
            }
        }
    }
 
    class ExistExceptions : Exception
    {
        public override string Message
        {
            get
            {
                return "Exist Exceptions";
            }
        }
    }
 
    class DictionaryStudents
    {
        public static SortedDictionary<Student, int> dic = new SortedDictionary<Student, int>(new Student.CompareByLastname());
 
        public void AddStudent(Student st, int mark)
        {
            try
            {
                dic.Add(st, mark);
 
                if (mark < 0)
                {
                    dic.Remove(st);
                    throw new RangeException();
                }
            }
            catch (RangeException re)
            {
                Console.WriteLine("Mark {0} is out of bounds [0..100] Exception : {1}", mark, re.Message);
            }
 
        }
 
        public void ListStudents()
        {
            foreach (KeyValuePair<Student, int> entry in DictionaryStudents.dic)
            {
                Student s = entry.Key;
                int v = entry.Value;
                Console.WriteLine("Student's name : {0}. lastname: {1}. mark : {2}", s.Name, s.Lastname, v);
            }
        }
 
        public void AddStudents(int n)
        {
            Random r = new Random();
 
            for (int i = 0; i < n; i++)
            {
                Console.WriteLine("Enter student's name");
                String s1 = Console.ReadLine();
                Console.WriteLine("Enter student's surname");
                String s2 = Console.ReadLine();
                Student s = new Student(s1, s2);
                dic.Add(s, r.Next(0, 100));
            }
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            DictionaryStudents ds = new DictionaryStudents();
 
            Student s1 = new Student("Vasya", "Zoro");
            Student s2 = new Student("Ivan", "Doom");
            Student s3 = new Student("Nikolay", "Fedorchenko");
            Student s4 = new Student("Roman", "Ares");
            Student s5 = new Student("Bogdan", "Ares");
            Student s6 = new Student("Bogdan", "Ares");

            try
            {
                ds.AddStudent(s1, 95);
                ds.AddStudent(s2, 64);
                ds.AddStudent(s3, -70);
                ds.AddStudent(s4, 80);
                ds.AddStudent(s5, 90);
 
                ds.AddStudent(s6, 78);

                //if(){
                //throw new ExistExceptions();
                //}
 
            }
            catch (ExistExceptions ee)
            {
                Console.WriteLine(ee.Message);
            }
            //ds.AddStudents(3);
 
            ds.ListStudents();

        }
    }
 
}

Решение задачи: «Как обработать исключение на одинаковые вхождения в sorted dictionary?»

textual
Листинг программы
if (mark < 0)
                    throw new RangeException();
 
                dic.Add(st, mark);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.071 из 5
Похожие ответы