SoftUni / Programming-Basics-Book-Java-BG

Textbook for the "Programming Basics" course @ SoftUni (Java, Bulgarian)
https://java-book.softuni.bg
Other
36 stars 34 forks source link

Глава 9.1. Задача: пет специални букви - грешка в кода, посочен в Насоки и подсказки #60

Closed AngelKalinkov closed 5 years ago

AngelKalinkov commented 6 years ago

Линк към файла

https://github.com/SoftUni/Programming-Basics-Book-Java-BG/blob/master/chapter-09-problems-for-champions.md

Описание

В описанието на решението се казва:

За начало ще добавим първата буква към началния стринг. image След това ще обиколим останалите 4 с цикъл, проверявайки всеки път дали ги има със следното условие и метода indexOf(…). image

Променливата l на цикъла е обвързана с индексите на символите в стринга current, което означава, че максималната стойност, която тя трябва да приеме е 4. По-нататък обаче, за установяване на теглото на символите от стринга unique се използва следния код:

image

Тук виждаме, че променливата l е обвързана с индексите на стринга unique. Следователно, ако стринга current има стойност "aaaab", символът 'b' ще има индекс 4 и ще бъде добавен към стринга unique, когато l = 4. В unique, обаче индексът на 'b' ще бъде 1. Което означава, че посоченият switch няма да проработи, защото излиза извън обхват и компилацията на кода ще бъде прекъсната от грешка.

За пресмятането на теглото на стринга unique е посочен кода:

image

Той ще доведе до грешна стойност на sum, защото отново е обвързан с l. При current = "aaaab", към 1(теглото на 'a') няма да добавим 2(теглото на 'b'), а 4*(теглото на 'b').

Текущ текст

Текст след поправката

nakov commented 5 years ago

fixed