Loading...
kimusubi avatar kimusubi 14 Точки

Преминаване на курса с Java

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

Поздрави

Тагове:
9
Структури от данни и алгоритми 30/06/2015 09:03:43
krach avatar krach 65 Точки

Здравей, гледам в момента задачите които си дал. За втора задача не, че не си работи но само като предложение го давам. Вместо да сплитваш думите първо в масив и после от масива да ги наливаш в листа, може директно от Стринга да ги ги запишеш с forech в листа

for (String string : inputString.split(" ")) {
         list.add(string);
       }

За задача 4 има малък бъг, когато числата са примерно 1,2,3 или 1,2,3,4 или 1,2,3,4,5, също при подадени 1,1,2 винаги разпечатва последното. При 1,1,2,3 работи коректно. Според мен проблема идва от този цикъл

for (int index1 = 0; index1 < list.size()-1; index1++ ), понеже с на индекс 1 и индекс 2 си им задал да са -1 и в случая горе не проверява последното. Ако го напишеш цикъла с индекс1 така:
for (int index1 = 0; index1 < list.size(); index1++ ) - мисля че работи коректно.
За задача 5 не разбрах защо са двата if-a преди while:
if (list.size() == 1)
if (list.size() == 2)
Програмата работи коректно и без тях до колкото тествах

За 6та задача, което тествах работи ОК, като препоръка само може да тестваш "Дженерици" (Шаблонни класове (generics)) от книгата на Наков - http://www.introprogramming.info/intro-java-book/read-online/glava16-lineini-strukturi-ot-danni/
Така ще си спестиш кастване при дадени условия

За задача 8, само като информация, гледам че  на 63 ред, първо използваш peek() след което на селдващия ред изпозлваш remove(). При такива ситуации може да изпозлваш направо poll() което прави и двете неща едновременно, извиква ти елемента и го премахва в същото време.

Ето така например
 int[] array;
        while ((array = queue.poll()) != null) {

 

П.П. Сега се сетих за задача 6 - ReversedList. Може вместо ти да пресъздаваш масив с двоен размер, да използваш ArrayList. Предвид, че не е посочено изрично в условието да се изпозлва масив, според мен не би трябвало да имапроблем да го изпозлваш наг отово. Като така си спестяваш писане, за да проверяваш дали се е препълнил и да създаваш нов и да го копираш.

Поздрави
Христо

0
12/07/2015 10:11:37
RoYaL avatar RoYaL Trainer 6849 Точки

Не съм гледал как колегата е решил задачата, но сигурен ли си, че имаш предвид това, което каза?

Говоряз а тази част "Вместо да сплитваш думите първо в масив и после от масива да ги наливаш в листа, може директно от Стринга да ги ги запишеш с forech в листа"

Кодът, който си дал по-долу прави същото. Минава през всеки едни стрингов елемент от динамично направен масив, който split() методът връща в условието на foreach-а.

---

За последната част от коментара ти - безсмислено е да си правиш лист, като отдолу ползваш отново Лист :)

0
12/07/2015 12:10:30
krach avatar krach 65 Точки

В домашното е написано така:

String inputString = input.nextLine();
        String[] words = inputString.split(" ");
        for (int i=0; i< words.length; i++) {
            list.add(words[i]);
        }

От стринга inputString  ги прехвърля в масив String[] words,  след което обхожда масива и ги добавя към листа. За това съм писал от първоначалния стринг директно да ги добавя към листа, не да изпозлва допълнителен масив.

for (String string : inputString.split(" ")) {
         list.add(string);
       }

 

"За последната част от коментара ти - безсмислено е да си правиш лист, като отдолу ползваш отново Лист :)" - за това не те разбрах какво имаш предвид

0
Yulia avatar Yulia 1346 Точки

Радвам се, че има толква много ентусиасти ^^ Аз също започнах да решавам задачите с Java :)

2
Matrix avatar Matrix 1092 Точки

Не трябва ученето на Java да се крепи само на добра воля или ентусиазъм - толкова много се търси и толкова много проекти има на Java (да не говорим за Андроид вселената), че не би било зле СофтУни да помисли как да вкара повечко от нея и прилежащите й технологии в програмата си. Страничен курс например. Защото пред работодателя не минава да кажеш "еми ние учим в СофтУни всичко на .NET, запознати се в по-големи детайли с нея отколкото с Java технологиите, ама то принципът e почти същият..." Работодателят просто ти отговаря с - "е да почти същото е, ама същевременно си има и своите специфични особености... наблягайте повече на тях, имаме нужда от хора, които поне малко от малко да са запознати с тях"... Т.е. не става само с 1 месец поразцъкване тук-там на Java и да казваме, че много си приличат и концепцията е една и съща...

3
17/07/2015 12:09:47
krach avatar krach 65 Точки

Пускам моя вариант на една от задачите от лекциите: https://codeboard.io/projects/7244 Това е за дърво . По - късно ще пусна и за двоично

0
krach avatar krach 65 Точки

Здравей, имам едно питане. Възможно ли е създаването на метод, който приема като аргумент друг метод.
Примерно нещо като forEach само, че да не имплементираш в метода конкретно действие, а това действие да го подаваш като аргумент?

0
creature5 avatar creature5 17 Точки

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

0
krach avatar krach 65 Точки

Имам един проблем при последното домашно.

https://github.com/krachunov/softUni/tree/master/SoftwareUni/src/homeWork5

В тест класа съм закоментирал кога ми дава този проблем: java.lang.ClassCastException но не мога да разбера защо така се получава. Ако изпозлвам само метода add нямам проблем и работи ОК, но за да изпълня условието от домашното да се въвжедат от конзолата, нещо ми се чупи но не мога да разбера какво. Дава ми грешка в класа Graph на ред148:
Някой ако може да помогне ще съм много благодарен

Поздрави

0
RoYaL avatar RoYaL Trainer 6849 Точки

При положение, че връщаната стойност на getValue е Т, трябва ли да кастваш към Т?

EDIT: Да, ясно, return type T го мисли за object, не е в това проблема.

0
28/07/2015 15:11:30
ivailozd avatar ivailozd 75 Точки

Здравей,

На 106 ред в Graph имаш: 

T[] line = (T[]) scan.nextLine().split(" ");

Което при Graph<Integer> и като имаме предвид, че scan.nextLine().split(" ") е String[], става:

Integer[] line = (Integer[]) String[]; --- не може да кастне Integer[] към String[] и хвърля ексепшън. Мисля, че това е проблемът, но сега не мога да тествам.

ТУК са обяснени много добре особеностите на generic масивите в Java.

1
28/07/2015 16:19:53
krach avatar krach 65 Точки

Благодаря ще го прегледам

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