Професионална програма
Loading...
+ Нов въпрос
lapd87 avatar lapd87 103 Точки

[LAB] Encapsulation - Problem {2} - Salary Increase

Колеги нещо не ми минава втори тест, ама аз ли съм тъп нещо...  Видях от видеото че подават кофти число и формата трябва да го има впредвид, но пак не става. Реално пробвах и %s на double като и то не минава на втори тест.

String.format("%s %s gets %s leva", this.firstName, this.lastName, this.salary)

# би трябвало да са колкото на Иво, ако съм броил правилно от екрана, но и с повече не стана...

public void increaseSalary(Double bonus) {

        if (this.age < 30) {
            bonus /= 2.0;
        }

        this.salary *= 1 + bonus / 100.0;
    }

    @Override
    public String toString() {
        return String.format("%s %s gets %s leva",
                this.firstName,
                this.lastName,
                new DecimalFormat("#.0#############################")
                        .format(this.salary));
    }

 

Качвам целия код дано някой вижда грешка някъде.

https://pastebin.com/63i3Sq96 - main class

https://pastebin.com/uC86NVUE - person class

Тагове:
0
Java OOP Basics 18/06/2018 19:52:53
Tanasis avatar Tanasis 39 Точки

Не трябва ли вместо 0-личката, която имаш да сложиш # ?

0
lapd87 avatar lapd87 103 Точки

Не, по условие ако е цяло число трябва да има 0.

Asen Ivanov gets 2640.0 leva
0
Tanasis avatar Tanasis 39 Точки

Aко пробваш с %.f  може би ?

-1
lapd87 avatar lapd87 103 Точки

Не, защото 12.000000000000000002 трябва да си излезе цялото.

виж видеото ако искаш около 01:38:00

https://youtu.be/Lr5v0vvODi0

0
Ivelin_Dimitrov avatar Ivelin_Dimitrov 148 Точки

Ами предполагам, защото отпред трябва винаги да има поне eдин знак преди дeсeтичната запетая, не трябва да е #, a трябва да имаш пак 0. Това е което работи при мен колега 

public void increaseSalary(double bonus) {
   double personalBonus = this.age >= 30 ? bonus : bonus / 2;
   this.salary += this.salary * personalBonus / 100;
  }

@Override
public String toString() {
   DecimalFormat df = new DecimalFormat("0.0#################");
   return String.format("%s %s gets %s leva", 
           this.getFirstName(), 
           this.getLastName(), 
           df.format(this.getSalary()));
    }

 

0
18/06/2018 20:25:40
Ivelin_Dimitrov avatar Ivelin_Dimitrov 148 Точки

Странно, но не намирам разлика със моето решиние, със изключение на 1% разлика във синтаксиса.... Гледах я ред по ред, ако искаш и ти погледни

https://pastebin.com/7CGX1P7j

1
lapd87 avatar lapd87 103 Точки

Мерси колега. Сигурно не си рефрешнал да видиш отговора ми :) този 1% разлика се оказва решаващ :D

0
lapd87 avatar lapd87 103 Точки

Така колеги оправих се.

Явно ***** грешка беше в това че формулата ми на изчисление е различна от тази в условието. Т.е. се получава разлика от грешката на double при различните операции и то в края. Моята и тяхната формула са математически еднакви, но double получава различни резултати в последните знаци.... 

2
Ivelin_Dimitrov avatar Ivelin_Dimitrov 148 Точки

готин хинт, нещо такова може здраво да ти скъса нервите :)

0
vonrepiks avatar vonrepiks 6 Точки

Както показахме днес на упражнението винаги когато искате да работите с проценти например да извадите 60 % от нещо формулата е следната: price - ((price * 60) / 100), като 60 са процентите, а накрая винаги трябва да се дели на 100.

1
lapd87 avatar lapd87 103 Точки

Да видях го :)

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

П.С. Радвам се че започнахте да гледате и форума не само ФБ :)

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