Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
System.out.println("How much money do you need to retire?");
Scanner inp=new Scanner(System.in);
float finalsm= inp.nextFloat();
System.out.println("How much will you contribute each year?");
float contr=inp.nextFloat();
System.out.println("What is interest rate?");
float inrate=inp.nextFloat();
float crrbal=0;int cyears=-1;
continue_accumulate:
{
while (crrbal < finalsm)
{
float interest = crrbal * inrate / 100;
crrbal += interest;
cyears++;
if (crrbal >= finalsm) break;
input_request:do
{
System.out.println("you need to contribute. Will you? ");
String consent = inp.next();
switch (consent)
{
case "yes":
case "Yes":
System.out.println("Thank you.");
break input_request;
case "no":
case "No":
System.out.println("ok, no problem. You've accumulated " + crrbal);
break continue_accumulate;
default:
System.out.println("Say Yes or No");continue input_request;
}
}
while (1==1);
crrbal+=contr;
}
System.out.println("You will have to deposit for "+cyears+"years.");
}
Програмка - учебный пример, которая рассчитывает сколько лет нужно ложить деньги на депозит, перед тем как выйти на пенсию :) Рассчет производится по сложным процентам (в банках так не делают). Взята из книги по JAVA, исправлена и доработана.
Зачем так все усложнять, если принять
x - начальная сумма
p - проценты
xa - ежегодное пополнение, то в конце N года у нас будет
S = x(1+p)^N+xa((1+p)^(N-1)-1)/p И отсюда легко выразить
xa = p(S-x(1+p)^N)/((1+p)^(N-1)-1)
Say Yes or No
{
...
}
x - начальная сумма
p - проценты
xa - ежегодное пополнение, то в конце N года у нас будет
S = x(1+p)^N+xa((1+p)^(N-1)-1)/p И отсюда легко выразить
xa = p(S-x(1+p)^N)/((1+p)^(N-1)-1)