- 3
Need help on the Loan Calculator for Java
https://code.sololearn.com/cXzemj7iFP2Y/?ref=app The expected output is 53144 but my output is 53145
53 Respuestas
+ 17
This code worked:
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
	 int rem_amt = amount;
		for (int i = 1 ; i <= 6 ; i++) {
    int paid = (int)Math.ceil(rem_amt);
    rem_amt = paid ;
    }
System.out.println(rem_amt*729/1000);
	}
}
+ 15
import java.util.Scanner;
public class Program
{
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int amount = scanner.nextInt();
		int payment=0;
		//your code goes here
		for (int i=0; i<3; i++){
			payment= amount/10;
			amount-= payment;
		}
		System.out.println(amount);
	}
}
+ 11
So pissed off! Needs elements it hasn't tougth you yet 😑
+ 11
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 i=1; i<4; i++){
			int payment= (amount*10)/100;
			amount= amount-payment;
		}
		System.out.println(amount);
	}
}
my code totally worked and I made it as simple as I could
+ 3
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 * 10) / 100);
   };
   System.out.println(amount);
	}
}
//Simple
+ 2
Here is tha answer, no need to import lang class.
import java.util.Scanner;
import java.lang.*;
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 i=0;i<6;i++){
     int payment =(int)(10*amount )/100;
     if((amount%10)!=0){
         amount =amount-1;
     }
     amount = amount- payment ;
    
     }
     System .out .print(amount);
	}
}
+ 1
Scanner scanner = new Scanner(System.in);
        int amount = scanner.nextInt();
        int remAmount = amount;
        for (int i = 0; i < 6; i++) 
            remAmount -= (remAmount * .10);
        System.out.println(remAmount);
+ 1
https://code.sololearn.com/cp6GXE4Rc84v/?ref=app
The reason why you get 54145 is because of Integer division. It ignores decimals (rounding down). Ultimately when you do a minus, you get an extra 1.
1: 100000 - 100000/10 = 90000
2: 90000 - 90000/10 = 81000
3: 81000 - 81000/10 = 72900
4: 72900 - 72900/10 = 65610
5: 65610 - 65610/10 = 59049
6: 59049 - 59049/10
  = 59049 - 5904 (missing precision) 
  = 54145 (extra 1, expected 54144)
To bypass, you can do "amount = amount * 90 / 100".
Do not hard-code -1 or +1.
One good example will be 0. After 6 months, it will still be 0. By hard-coding -1, it results in -1 which is wrong.
+ 1
The issue of getting an incremented value instead of the intended one is directly connected with your usage of integers instead of doubles. If you receive a int value the java terminal outputs it after rounding, making it possible for incremented values to be present.
There are two ways you can see through this issue:
The first one is using 90% percent of the value instead of taking 10% than subtracting it from the rest, which is inevitably, and mathematically, the same thing. The only difference is you will receive cleaner code.
import java.util.Scanner;
class Program {
  public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    double amount = scanner.nextInt();
    for (int i = 0; i < 6; i++) {
      amount = amount * 0.9;
      if (i == 5) {
        int final_loan = (int)amount;
        System.out.println(final_loan);
      }
    }
  }
}
You can use this one here. This will be a great solution for some examples but the rest still yield an error, I tried but couldn't find any answer in the level of a beginner so you have to use math.ceil
2nd solution:
Replacing the for loop with this in the previous code will yield the answer:
 int rem_amt = amount;
	for (int i = 1 ; i <= 6 ; i++) {
    	int paid = (int)Math.ceil(10/100.0*rem_amt);
    	rem_amt -= paid ;
+ 1
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 i=0;i<6;i++){
    amount = (int)(amount*0.9);
  }
 System.out.println(amount);
	}
}
+ 1
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
		int i=0;
		int Newamount;
		while(i<6){
			amount=amount*90/100;
			++i;
			if(i==5){
				Newamount=amount*90/100;
				System.out.println(Newamount);
			}
		}
		
	}
}
+ 1
import java.util.Scanner;
public class Program
{
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		
		//your code goes here
		int amount = scanner.nextInt();
  int i = 1;
  while (i <= 3)
  {
      amount = (int)(amount *0.9);
      i++;
  }
  System.out.println(amount);
	}
}
0
cmdr tigerray1,
The question in SoloLearn is:
"Use a loop to calculate the payment and remaining amounts for each month. 
Also, use integers for amounts."
Didn't state for the 10% (or 90%) intermediate factors can't be double. However, final result must be in integer.
If you realised, in another solution above, the poster used "Math.ceil(10/100.0*rem_amt)". The denominator, 100.0, is a double as well.
If you want to avoid using 0.9, you can use 90/100.0 in my coded solution. It's the same.
0
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
    int payment = 0;
		for (int x=0; x<=5; x++)
    {payment = amount/10;
    amount = amount-payment;}
    {System.out.println (amount);
	}
}}
This is what I came up with. It works but my end output is 54145, but it expects 54144. I honestly think there's an issue with the imbedded compiler
0
The problem with this is there's limitations.  This assignment does not use any special class/ method calls,  and the numbers have to be int.  Normally you could use decimal numbers for the math,  but this forces the compiler to look for a double that isn't there. Go to java > conditionals and loops>10 end of ...
to see the parameters. don't use anything that hasn't been taught to that point
0
Ah I see,  tyvm
0
Ok
0
OK
0
int amount = scanner.nextInt();
for (int i = 0; i < 6; i++){
// type cast amount to a double
double payment = (double)amount / 10;
double remaining = amount - payment;
//type cast amount back to an int
amount = (int)remaining;
} System.out.println(amount);
/* this was amount always begins a new iteration or the loop as an int but is calculated as a double so the decimal parts are subtracted correctly, and eliminating the need to use Math.floor or Math.ceil. */
0
Easiest solution! Not a single loop is used. It is what a novice should do.....ha ha ha
import java.util.Scanner;
public class Program
{		public static void main(String[] args) {
			Scanner scanner = new Scanner(System.in);
int amount = scanner.nextInt();
int fm=(int)Math.ceil(amount-1-amount*0.1);
int sm=(int)Math.ceil(fm-1-fm*0.1);
int tm=	(int)Math.ceil(sm-1-sm*0.1);
int fom=(int)Math.ceil(tm-1-tm*0.1);
int fim=(int)Math.ceil(fom-1-fom*0.1);
int sim=(int)Math.ceil(fim-fim*0.1);
		
		System.out.println(sim);
		}
	}
















