0

Loan calculator

This code is supposed to display the remaining balance after 3 months, and the balance is decreased by 10% each month. I retraced the loop interations on paper, and with an input of 100,000 I get a remaining balance 65,610 which is wrong but very different from what this code shows import java.util.Scanner; public class Program { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int amount = scanner.nextInt(); //your code goes here double answer = 0; for (int x =1; x<=3; x++){ answer = amount - (amount*.10); amount -= answer; } System.out.println(amount); } }

28th Oct 2021, 7:21 PM
Natanael
8 odpowiedzi
+ 1
I just figured it out, the answer has to be an integer number so I only needed to divide by 10 instead of multiplying by .10 because that will give me a decimal point answer, here's the working code import java.util.Scanner; public class Program { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int amount = scanner.nextInt(); //your code goes here for (int x =0; x<3; x++){ amount = amount - (amount / 10); } System.out.println(amount); } }
29th Oct 2021, 2:43 PM
Natanael
+ 1
double amount = scanner.nextDouble();
28th Oct 2021, 9:02 PM
SoloProg
SoloProg - avatar
+ 1
Natanael , scanner.nextInt() or scanner.nextDouble() both depend on the input wether you want an integer or a decimal and you need to have a decimal because you have a multiplaction operation which is multipling by 10% for the variable or the integer if you want to display in a direct way. I suggest you use decimal if you want a more precise answer. Note: there is no diffrence between them .1 = .10 amount / 10 = amount * .1
29th Oct 2021, 4:49 PM
SoloProg
SoloProg - avatar
0
I think I'm close now just need to figure out the problem between int and float variables, heres a better version of the code but I changed the amount variable to float, I get the right answer but with a decimal point import java.util.Scanner; public class Program { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); double amount = scanner.nextInt(); //your code goes here double interest = .10; int answer = 0; for (int x =1; x<=3; x++){ amount = amount - (amount*interest); } System.out.println(amount); } }
28th Oct 2021, 7:31 PM
Natanael
0
Natanael You could simplify your logic by using an operator directly upon your amount variable for(int i=0; i<3; i++){ amount *= 0.9; } System.out.println(amount);
28th Oct 2021, 8:28 PM
Rik Wittkopp
Rik Wittkopp - avatar
0
Yes, I could simplify the logic within the loop which would mean less words but that's it, it will not make this code work at all, I think SoloProg has a better idea.
29th Oct 2021, 2:21 PM
Natanael
0
I take that back, this part here will not work because I'm not supposed to change it, originally it's int amount = scanner.nextInt() This here won't work because it's above the section that says // your code starts here /*******double amount = scanner.nextDouble();********/
29th Oct 2021, 2:32 PM
Natanael
0
Thank you, I knew about .1 = .10 but dividing by 10 is equal to multiplying by .1 is something new I learned before I figure out this code challenge. The challenge requires that the answer is displayed as an integer number, that's why I cannot use a float variable. When I figured out this code the answer was wrong because the output was something like 72900.0 instead of just 72900 I think this is mostly a math problem, I figured it out once I used my calculator and decided to divide by 10
29th Oct 2021, 6:01 PM
Natanael