Професионална програма
Loading...
+ Нов въпрос
rosen.ivanov avatar rosen.ivanov 130 Точки

[C# Advanced][Manual String Processing - Lab] 02. Parse URLs

Здравейте,

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

 

            var url = Console.ReadLine();
            var urlTokens = url.Split(new[] { "://" }, StringSplitOptions.RemoveEmptyEntries);
            var indexResource = urlTokens[1].IndexOf('/');

            if (urlTokens.Length != 2 || urlTokens[1].IndexOf('/') == -1)
            {
                Console.WriteLine("Invalid URL");
                return;
            }

                var protocol = urlTokens[0];
                var server = urlTokens[1].Substring(0, indexResource);
                var resources = urlTokens[1].Substring(indexResource + 1);

                Console.WriteLine($"Protocol = {protocol}");
                Console.WriteLine($"Server = {server}");
                Console.WriteLine($"Resources = {resources}");

========================================================================

            var url = Console.ReadLine();
            var urlTokens = url.Split(new[] { "://" }, StringSplitOptions.RemoveEmptyEntries);

            if (urlTokens.Length != 2 || urlTokens[1].IndexOf('/') == -1)
            {
                Console.WriteLine("Invalid URL");
                return;
            }

            var protocol = urlTokens[0];
            var indexResource = urlTokens[1].IndexOf('/');
            var server = urlTokens[1].Substring(0, indexResource);
            var resources = urlTokens[1].Substring(indexResource + 1);

            Console.WriteLine($"Protocol = {protocol}");
            Console.WriteLine($"Server = {server}");
            Console.WriteLine($"Resources = {resources}");

Тагове:
0
C# Advanced
rosen.ivanov:
Получих отговор.
icowwww avatar icowwww 958 Точки

Може би защото в първия случай зимаш urlTokens[1] още преди да е минала проверката дали то съществува. Даже би трябвало ако размениш местата във втория случай(който сега работи на 100) на if (urlTokens[1].IndexOf('/') == -1 || urlTokens.Length != 2) пак да гръмне за този тест

0
08/06/2017 12:08:13
rosen.ivanov avatar rosen.ivanov 130 Точки

Така, както казваш, гърми, да, ама защо, това че вземам индекса преди проверката е проблем? Просто indexResource ще е равен на -1, ако няма наклонена черта в текста.

0
icowwww avatar icowwww 958 Точки

Теста от джъдж е текст, в който няма "://". Тогава се получава това: 

urlTokens.Length = 1

взимаш urlTokens[1], преди да провериш дали urlTokens.Length != 2, така излиза от масива

0
rosen.ivanov avatar rosen.ivanov 130 Точки

Разбрах, ама това е малко тъпичко...

0