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
Fujitzo avatar Fujitzo 9 Точки

Някой обърнал ли е внимание на 4та - 3тия пример ми се струва грешен, или е с някво странно закръгляне.

Аз получавам F1 result: 239531.34; F2 result: 1.00; Diff: 119764.94. Пробвах с double и с float променливи. Доколкото тествах кода на Симо - той получава същото.

Интересно ми е просто , защото от ей такива дреболии се губят точки по изпитите...

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

Няма грешка в примерите. Не си си показал кода и затова не мога да ти видя грешката. Но ето моят код: http://pastebin.com/iihCZ8yu Дано ти е полезен :)

0
Fujitzo avatar Fujitzo 9 Точки

Открих проблема, на едното място бях оставил float - всичко трябва да е с double. И Бтв аз се бях заблудил че float пази до 7мия знак след десетичната запетая , а то е че цялото число може да е до 7 знака т.е 239530.27 вече му е голямо. Не че му е голямо ами започва да закръгля по странен начин...т.е да го кажа по-правилно - float i double могат да пазят много големи числа (float до 38 нули, а double до 300 и нещо нули доколкото си спомням) но с определена точност. Още не съм осъзнал напълно какъв е смисъла от число, което може да има 200 знака след запетаята (записано в експоненциална нотация), но след 15тия да са неправилни.. май има нещо общо с двоичната vs десетична репрезентация на числото, но да не задълбаваме... 

Виж моя код колко е прибран wink

http://pastebin.com/yPsqUGmx

С един поглед всичко се разбира. Според мен е напълно излишно от методи за такива прости задачи. Да, променливите не са по конвенция, но в условието така са дадени и формулите се четат бързо и са на 1 ред.. 

ПП: 14та според мен не е за 3 звезди в никъв случай, можеби са и дали защото изпреварва лекцията за колекции и карти. До колкото прегледах различните решения, мисля че е помислено за всичко вече. А ако се чудите защо не е давана на изпит - ами много просто, може да върнеш true ili false без да правиш нищо и така половината отговори в judge стават вярни (40 точки от въздуха примерно) laugh

0
djc_bg2015 avatar djc_bg2015 923 Точки

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

Решение на колега с 2 вложени цикъла и 2 стринга:

https://gist.github.com/vdonchev/a20f40f3d991b7f53050

0
supersane avatar supersane 234 Точки

Я да задам едно въпросче, тук и да не правя нова тема. Колко на брой домашни от всяка тема трябва да оценяваме?

0
zhecho15 avatar zhecho15 6 Точки

Мисля, че най-малко по 3 :)

1
supersane avatar supersane 234 Точки

Благодаря! 

0
Ani_Dimitrova avatar Ani_Dimitrova 2 Точки

Здравейте,

Доста съм нова и предварително ви моля да не се смеете ако задам някой тъп въпрос. Изчетох StackOverflow, както и разни туториали, отчасти отговарящи на въпросите ми, но не изцяло. Та имам няколко въпроса (в момента решавам това домашно със закъснение):

 

1. На задача 10 с regex, успях да го докарам до следният output на този стринг: "This278346127Is887/-+*My+*//542World"

output: ThisIsMyWorld

И запецнах. Рових, опитвах с List<String> и какво ли не, накрая сложих space и се получи следното:

T h i s I s M y W o r l d

Накрая намерих и от някъде {2,} и така патерна ми стана [a-zA-Z]{2,}, което реши проблема. 

Чудесно, само дето не разбрах какво точно прави това {2,} и ще съм много благодарна ако някой ми обясни =))

 

2. Следващият ми въпрос (и последен за сега) е каква е разликата между следните 3 изрази и методи и кога кой се използва:

String.ValueOf

Integer.toString

Integer.parseInt

все се чудя кое да използвам, когато се наложи, третото май се ползва при обръщане на String към Int, но мисля, че и първите 2 са за това.. много ще съм благодарна за всякакво просветление по темата =)))

 

Благодаря предварително и поздрави,

Ани

 

0
zhecho15 avatar zhecho15 6 Точки

Здравей, относно първия въпрос когато имаш патерн [a-zA-Z]{2,} това означава ще мачваш само стрингове който са с 2 или повече символа и съдържат само латински букви.

Относно втория въпрос разликата е доста голяма...

String.ValueOf приема всякакви типове(double , string, int) и връща стринг

Integer.toString приема само цели числа и също връща стринг, а ако не му подадеш цяло цисло връща exception

Integer.parseInt приема стринг и връща цяло цисло, ако стринга е съставен само от цифри иначе връща exception

ето пример за по добро разбиране https://github.com/zhecho1215/Java/blob/master/Example

Надявам се да съм помогнал :)

 

0
Ani_Dimitrova avatar Ani_Dimitrova 2 Точки

Здравей,

Много ти благодаря! Това определено ми помогна доооста! Благодаря ти! =))) 

 

1
29/11/2015 20:10:11
galya.miteva avatar galya.miteva 28 Точки

Здравейте, колеги! Виждам , че темата е от миналата година, но тъй като март месец ми предстои да започна fundamental level с  Java Basic искам малко да напредна с материала. Проблема ми е,че когато искам да отпечатам нещо с System.out.printf(...), printf  ми светва с червено и ми казва да направя това, което ще принтирам като Object, но като го направя като Object не могат да се  извършат пресмятанията. Някой може ли да ми каже защо се получава така? гледам в другите решения , че не се слага нищо допълнително като utilities и т.н. за printf. 

0
05/02/2016 16:26:28
smoovetd avatar smoovetd 6 Точки

Здравей, може ли да дадеш малко по-детайлна информация какво точно се случва? По принцип printf се използва за форматиране на изхода - иска стринг  и стойност. Като е некоректно въведено ( поне в Еклипс гледах) казва че иска (String , Object). Доколкото разбирам в момента описваш подобна ситуация:

        int a = 5;
        int b = 7;
        
        System.out.printf(a+b); // тук IDE-то printf подсказва, че printf е грешно написано

Ако това е случая , то има 2 варианта - или ползваш System.out.println(a+b) или  - System.out.printf("%d",(a+b)) - тук %d (String-а) оказва, че вместо него трябва да дойде decimal integer ( един вид плейсхолдър), който се подава след това ( явява се Object-a).  Доста детайлна информация за ползването на printf има тук -  и тук

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

Успех

2
05/02/2016 17:04:25
galya.miteva avatar galya.miteva 28 Точки

Благодаря за бързия отговор ! Да става въпрос точно когато трябва да се ползва това форматиране и т.нар.плейсхолдъри. printf светва. Но се поразрових още из форума и видях точно същия проблем. Printf  давал грешка ако не се направят допълнителни настройки на еклипса в project -> properties -> java compiler и от там идвал проблема. Друго ако мога да те попитам е как копираш даден файл от уиндоус в линукс ? За една от задачите трябваше да се ползва външна библиотека за създаването на pdf document и ползвам itext. Във форума бяха обяснили да се копира шрифта times new roman  и да се сложи в папкта с проекта който е на линукса ест.е пробвах какво ли не и не успях иска ми една парола за workgroup която не я знам и до  там.

0
smoovetd avatar smoovetd 6 Точки

Супер , че си намерила решение за printf проблема и благодаря за полезното инфо, че IDE-то може да води до такива главоболия. Относно проблема за копирането на файла от уиндоус в линукс, доколкото схващам уиндоуса ти е хост машина и на нея имаш виртуална машина с линукс. Ако това е сценария и ползваш virtualBox като цяло трябва да имаш инсталиран Guest Additions на линукса, да добавиш шеърд фолдър и каквото сложиш в този фолдър ( примерно директорията D:\ ) ще можеш да го отвориш в линукса. Обяснено е тук , но не знам дали тези конкретни стъпки ще ти свършат работа. По-скоро виж за точни стъпки за линукс дистрибуцията, която ползваш. Ако сценария е друг или пак не става, тогава най-добре ще е да отвориш нова тема във форума. Направих бърз преглед, но подобна не открих.

Успех

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