bigdecimal - Error With Big Decimal in Java -


i keep getting

the method add(bigdecimal) in type bigdecimal not applicable arguments (pay)"

error code below.

for reference have saved pay class in separate file, import bigdecimal well.

would 1 of point out i'm lacking/misunderstanding? i've tried find solution, couldn't find something.

import java.util.scanner; import java.math.bigdecimal;  class salespreint {      public static void main(string[] args) {         pay pay = new pay();         pay.basepay();          bigdecimal intcalc = new bigdecimal("0.15");          scanner userinput = new scanner(system.in);          system.out.println("what total sales?");         bigdecimal salespre = userinput.nextbigdecimal();         system.out.println("you're total sales "+salespre);          userinput.close();          bigdecimal postintcalc = salespre.multiply(intcalc);         bigdecimal salescom = postintcalc.add(salespre);         int finalcalc = salescom.add(pay);          system.out.println("your total sales including commission "+salescom);         system.out.println("your total pay is"+finalcalc);     }    } 

pay.java file below:

import java.math.bigdecimal;  public class pay {     public void basepay() {         int basepay = 50000;         bigdecimal bd = new bigdecimal(string.valueof(basepay));     } } 

like error message tells you, add method of bigdecimal 1 argument expects bigdecimal instance: [javadoc]

public bigdecimal add(bigdecimal augend)

returns bigdecimal value (this + augend), , scale max(this.scale(), augend.scale()).

parameters:
augend - value added bigdecimal.

returns:
this + augend

you've passed variable of type pay method , since pay not subtype of bigdecimal not related it. method add can't know how add pay instance, compiler complains argument type.

you can following fix, bypass problem:

your basepay method creates bigdecimal , guess 1 add salescom, change method bit:

public bigdecimal basepay() {     int basepay = 50000;     return new bigdecimal(string.valueof(basepay)); } 

this method creates bigdecimal , returns calling method. change add method call use basepay method:

int finalcalc = salescom.add(pay.basepay()); 

now there 1 problem left. can see in javadoc posted above, add returns new bigdecimal instance, you're assigning returned value variable finalcalc, of type int. need change bigdecimal:

bigdecimal finalcalc = salescom.add(pay.basepay()); 

now code compiles , should work expected.


Comments

Popular posts from this blog

c# - Validate object ID from GET to POST -

node.js - Custom Model Validator SailsJS -

php - Find a regex to take part of Email -