Loading...
Simooo93 avatar Simooo93 81 Точки

[Homework] Java Syntax

Здравейте колеги,

хайде да обсъдим и новото домашно. За мен лично най-трудната задача беше тази с форматирането, просто не ми се получиха нещата с добавянето на нули като ляв падинг при бинарното число. Пробвах доста варианти от stackoverflow, но никой не стана. Накрая си свалих външна библиотека guava и тя направи чудото. 

В домашното на 12-та задача стринговете Gosho и Pesho са равни на = 53253, а не, както беше дадено в примера по-голямо число, смятах го и на калкулатор отделно така, че не разчитам само на собствената си програма, за да казвам, че има грешка по домашното.

Java ми става все по-интересна и доста ми хареса регекса while(matcher.find())  доста по-лесно отколкото в c# match.Success после match.MoveNext() или там, както беше.

Надявам се и да видя свястно решение на 7-ма, че моето е малко хакнато, просто не намерих как се ползва рандом с долна и горна граница, каkто при c# и ако може някой да ми отговори на следните въпроси:

Някой може да ми каже в java кое замества @, за да не избягвам всеки символ по отделно ?

В github тази папка out/production трябва ли ми или да я махам ? 

Задачите: 

01. Rectangle Area

02. Triangle Area

03. Formatting Numbers

04. Calculate Expressions

05. Convert from decimal system to base-7

06. Convert from base-7 to decimal

07. Randomize numbers from N to M

08. *Odd and Even Pairs

09. *Hit the Target

10. Extract words

11. Starts and Ends With Capital Letter

12. Character Multiplier

13. Get First Odd or Even Elements

14. ***Magic exchangeable words

Тагове:
7
Java Advanced 15/10/2015 14:49:30
TonyDimitrov avatar TonyDimitrov 27 Точки

Може ли някой да ми поясни с две три изречения какво трябва да се направи на 14*** задача, че само тя остана и искам да я пробвам но не схващам как да се '''риплейснат буквите'.

Благодаря.

PS: на 9-та Hit the target принтираш повтарящи се комбинаций като input-> 5 combinations->  2+3 3+2 / 1+4 4+1 / 

това може лесно да го избегнеш като втория вложен цикъл започва с големината на първия или int j = i;

1
17/10/2015 03:20:34
Simooo93 avatar Simooo93 81 Точки

Здравей, 

просто ти трябва по някакъв начин да пазиш коя буква на какво отговаря. Тоест "cdaa aaaa" на 'c' отговаря 'а' това 'a' трябва да замества единствено и само 'c' нищо друго и затова трябва да се прави проверка както дали вече този ключ е използван с друга стойност, така и дали вече тази стойност не е дадена за друг ключ. Аз в началото бях забравил това нещо и като дойде новия ключ 'd', който сочи към 'а' аз не го проверявам, защото ключа е нов, а аз проверявах само такива, които вече са минали затова в случая трябва да провериш и дали 'а' вече не е използвано като стойност на друг ключ и ще видиш, че е използван за 'c' тоест двата стринга няма да могат да си разменят стойностите. 

Начинът, по който ще пазиш ключовете и стойностите си е твой избор,но за всеки един ключ трябва да се пази уникална стойност, тоест не можеш да има ключ използван 2 пъти с разлияни стойности например на 'c' веднъж да отговаря 'а' веднъж 'd' и също една стойност не може да бъде иползва два пъти в различни ключове, тоест не може едновременно и на 'c' и на 'd' да отговаря 'а'.

3
TonyDimitrov avatar TonyDimitrov 27 Точки

Мерси мисля, че разбрах да интересна е задачата. Ще я пробвам!

0
bacuty avatar bacuty 55 Точки

Ето и моите решения, исках да питам трябва ли накрая да се пише scanner.close(); .14 задача я разбирам от типа на декриптването, като се срещне даден знак да съответства на друг, това трябва да се запази за целия стринг.

https://github.com/VasilenaDragancheva/JavaClasses

2
17/10/2015 12:57:22
djc_bg2015 avatar djc_bg2015 923 Точки

В лекция на Наков от преди няколко инстанции на курса, той каза че според еклипс и другите редактори скенера трябва да се затваря, но според него не трябва.

Израза беше нещо от сорта: "Като влезеш в магазин и врата е отворена, не я затваряш след себе си".

Поздрави!

1
Simooo93 avatar Simooo93 81 Точки

Зависи кога ще го затваряш, ако имаш дълга задача и той не ти трябва няма лошо да го затвориш, но ако ще го използваш по-добре да избегнеш затварянето му, а доколкото разбрах от лекциите като си затвориш програмата потокът System.in  си се затваря автоматично, така че няма смисъл да затваряш скенера накрая. 

Поздрави :) 

0
naskoni avatar naskoni 68 Точки

Да допълня колегите по-горе: аз използвам анотацията @SuppressWarnings("resource") над реда с декларацията на скенера. Еклипс например ти предлага сам да го добави. Така избягваш предупрежденията за незатворен ресурс.

0
cap7ainjack avatar cap7ainjack 20 Точки

Здравейте,

Относно 8-ма

Odd and Even Pairs - това е моето решение, обаче не мога да схвана защо, ако в If statement-a нямам Continue влиза и в Else ?

По този начин, по който е работи, но защо не работи без Continue , мисля че логита на If си е същата както в CSharp?

 

0
17/10/2015 18:36:05
Simooo93 avatar Simooo93 81 Точки

Здравей,

ами не съм разгледал подробно задачата, но, ако искаш само един от if-овете да се активира трябва да ги навържеш с else if иначе в момента имаш else само на последния if и след като ти се активира някой от по-горните условия слиза надолу проверява последното условие към, което си сложил else и съответно то не е вярно и влиза в else-а автоматично. 

Поздрави :) 

1
Housey avatar Housey Trainer 129 Точки

При мен нямаше нужда от друга библиотека, за да ми сработи форматирането на 3-та задача:

System.out.printf("|%-10X|%010d|%10.2f|%-10.3f|", a, Integer.parseInt(Integer.toBinaryString(a)), b, c);
1
Kiril98 avatar Kiril98 66 Точки

Според вас това решение на 14-та валидно ли е ? -- > MagicExchangeableWords

Минавам всички тестове дори си измислих някои сам и въпреки това все още не съм сигурен.

0
biser.stoev avatar biser.stoev 57 Точки

При ccdd aaaa ти връща true, а трябва false. И аз имах същата грешка. Пробвай да ползваш Map :)

1
mirela95 avatar mirela95 56 Точки

Здравейте, 

ето ги и моите решения, надявам се правилни laugh . 14 задача ме затрудни и разгледах вашите решения. Благодаря, че сте ги качили. Може да се каже, че половината от задачата я бях разгадала, но тези колекции... само като си помисля колко проверки трябваше да правя. Не мога да си представя колко време щеше да ми отнеме и дали въобще щях да се сетя да използвам hash map. :) 

0
Lamms avatar Lamms 197 Точки

Здравейте, можете ли да ми помогнете да ми намерите грешката в 12 задача. Задачата е лесна, но нещо забих и не виждам къде съм объркала. Не работи при инпут а аааа.

http://pastebin.com/cYgZCPSP

0
19/10/2015 10:03:11
naskoni avatar naskoni 68 Точки

Lamms, и ти получаваш StringIndexOutOfBoundsException, защото при различни дължини на стринговете се опитваш да достъпиш елемент на несъществуваща позиция в по-малкия стринг.

Затова цикъла, в който умножаваме, трябва да върти до по-малката дължина. След това в друг цикъл:

        for (int i = minLength; i < maxLength; i++) {
            sum += (int)(longestStr.charAt(i));
        }

добавяме останалите кодове. Дългият стринг го намираме предварително така:

       String longestStr = str1.length() >= str2.length() ? str1 : str2;

 

 

 

1
naskoni avatar naskoni 68 Точки

Simooo93, обърни внимание на твоето решение на 10-та задача, защото хваща и единични букви, а по условие думата е от 2 или повече букви. Регексът трябва да е "[A-Za-z]{2,}"

За 7-ма задача: няма лошо да си направим сами разбъркването, само за информация да кажа, че можем да ползваме Collections.shuffle().

Допълнение за 12 задача:

Колега, в твоето решение, ако се подаде първия стринг да е по-голям от втория - получаваш StringIndexOutOfBoundsException. Ще прощаваш, че само на теб (засега) намирам кусури, ама твоето домашно е първо в темата. cheeky Освен това ми се струва излишно да скачаме в друг метод за изчисляване на остатък, ако дължините на стринговете са равни.

Да обърна внимание на всички колеги, че примерите в условията обикновено не са достатъчни. Ако тествахме в judge, щяхме да се поизпотим повече с домашното. wink

 

1
19/10/2015 14:51:46
Simooo93 avatar Simooo93 81 Точки

Колега много се радвам дори, че си се прицелил в моите домашни :) Именно затова ги качвам, защото си ги правя минават си ми примерите от домашните и си мисля, че всичко е добре със задачата, но има неща, които пропускам, които ми се доизясняват във форума. 10-та си я оправих, ще си погледна и 12-та. 

Благодаря ти :) 

0
Willbe.S avatar Willbe.S 5 Точки

Интересни задачи, започнах да свиквам с Java вече :)  Ето едно решение на 14-та без мап, работи с примерите в домашното, но не знам дали покрива всички случаи, какво мислите?

http://pastebin.com/zYsWbPhe

 

1
Simooo93 avatar Simooo93 81 Точки

Здравей,

първия момент не можах да разбера логиката зад програмата ти, тъй като не мога да я пробвам в момента и дебъгна, но я разгледах подробно и ако работи така, както си мисля е много хитро. Браво ! 

Поздрави :) 

0
20/10/2015 22:37:36
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.