04. Game Number Wars
https://judge.softuni.bg/Contests/Practice/Index/1538#6 ----> условие
https://pastebin.com/Ez0GLpv2 ----> моят код 50/100
Някой може ли да каже как да го променя, двата теста минават, но този с "End of game" - не
https://judge.softuni.bg/Contests/Practice/Index/1538#6 ----> условие
https://pastebin.com/Ez0GLpv2 ----> моят код 50/100
Някой може ли да каже как да го променя, двата теста минават, но този с "End of game" - не
Заповядай, преработих ти кода, сега дава 100/100 в джъдж.
Здравей,
Това , което забелязах, е този ред:
while ( !playerOneName. equals ( "End of game" ) )
playerOneName никога няма да има стойност "End of game" стойността ще си стои името което конзолата е прочела по-горе.
Трябва да направиш нова променлива която да чете реда след имената и ако не е равна на "End of game" да влезе в цикъла.
нещо не разбрах пробвах така, но пак същия резултат https://pastebin.com/xhkAd0cu
трябва ти нещо такова https://pastebin.com/BS7BxKte
Егати обърканата разбота :D
Ами всъщност не е чак толкова объркана, просто трябва да го прегледаш няколко пъти, и да го пуснеш през дебъг за да видиш как точно работи, идеята е да инициализираш променливите които ти трябват за да вземеш входните данни, в твоя случай беше пропуснал да сложиш променлива която да вземе определена команда, а беше сложил в цикъла името на първия играч да е различен от командата, което обаче никога няма да проработи, защото може да имаш условие в което не получаваш такава команда, или условие в което си получил двама играчи и след това получаваш командата, което значи че ти трябва друга променлива, и е най добре да я инициализираш още в началото на кода, може и директно да кажеш
Или докато командата е различна от тази, да се изпълнява кода който си написал, и в случай че пполучиш тази команда тогава прекъсваш всичко и принтираш даден резултат, до тук беше обяснението защо се ползва отделна променлива за вход, въпреки че не е указана в условието. След това в условието е следното:
Вход
Първоначално се четат два реда:
След това, до получаване на команда "End of game", се четат многократно по два реда:
Което означава че ти имаш стринг за имената и след това получаваш само числа обаче в един момент може да получиш пак стринг за вход който да прекрати цялата операция, и така както ти си написал кода той ще ти гръмне защото се опитваш да четеш стринг а имаш Integer.parseInt(scanner.nextLine()):
За това съм сложил
така казано метода " парсва" string към Integer, или ти си подаваш числа но ако в един момент получиш стринг команда тогва тоззи метод го обръща и няма да ти гръмне с :
Exception in thread "main" java.lang.NumberFormatException: For input string: ""
Схвана ли идеята как е променен кода ти, и защо е така? Освен това във втория код който си пуснал имаше две променливи които си ги инизиализирал но след това не ги ползваш и съответно задачата не ти работи:
Надявам се че си разбрал това което съм ти написал.Поздрави.
Много благодаря за обяснението! Пускам дебъга да си го прегледам ;)