Удаление дубликатов из двух массивов
Задача такова: у меня есть два массива a и b, в них мне нужно найти элементы встречающиеся в обоих массивах и вывести новый массив без этих элементов. Пример:
var a = new int[] {1, 2, 2};
var b = new int[] {2, 2};
var result = new int[] {1};
Задачу я уже решил, вот мой код:
public static int[] ArrayDiff(int[] a, int[] b)
{
var intersect = a.Intersect(b).ToArray();
a = a.Except(intersect).ToArray();
b = b.Except(intersect).ToArray();
var result = a.Union(b);
return result.ToArray();
}
public static void Main()
{
int[] array = Console.ReadLine().Split().Select(int.Parse).ToArray();
int[] array_2 = Console.ReadLine().Split().Select(int.Parse).ToArray();
Console.WriteLine(string.Join(" ", ArrayDiff(array, array_2)));
}
Выводится все правильно, но есть одна ошибка, которую мне нужно обработать. Когда я не ввожу в консоль ничего, то есть оставляю массив пустым или после введенного числа ввожу более одного пробела, у меня появляется исключение:
System.FormatException: Входная строка имела неверный формат.
Мне нужна помощь в обработке данного исключения и желательно чтобы оно было написано в методе ArrayDiff, так как на сайте где я решаю данную задачу, метода Main нет. И если что, то в главном методе Main я уже писал обработку этого исключения с помощью try/cath, но это не самый лучший вариант потому что, как я уже сказал, на сайте этой задачи у меня есть только один метод, в котором я должен написать весь код.
Ответы (1 шт):
Полностью рабочий вариант
ConsoleKeyInfo key;
var rule = @"[0-9 ]";
string stringarr = "";
while (true)
{
key = Console.ReadKey(true);
if (key.Key == ConsoleKey.Enter)
break;
if (Regex.IsMatch(key.KeyChar.ToString(), rule))
{
stringarr += key.KeyChar.ToString();
Console.Write(key.KeyChar);
}
}
stringarr = Regex.Replace(stringarr,@"\s+", " ");
int[] arr = stringarr.Split(' ').Select(n => Convert.ToInt32(n)).ToArray();
Console.WriteLine((string.Join(' ', arr)));