java - unable to produce random number? -


each object in warehouselist contains end stock, safety stock, , required stock. aim change end stock of object if lesser 10% of safety stock, , put in range of -%10 %5 of safety stock. im using randomizer code:

random random=new random(); for(warehouse obj:warehouselist){      double diff=obj.getendstock()-obj.getsafetystock();      if(((diff/obj.getsafetystock())*100)<(-5)){         diff=math.abs(diff)+(1.05*obj.getsafetystock())-obj.getsafetystock();         if(diff<0)             logging.log(diff,"\n");         int randomnum=0;         double reqstock=0;         double end=obj.getendstock();          while(((end-obj.getsafetystock())*100)<(-5)){              randomnum=random.nextint((int)diff);             reqstock+=randomnum;             end+=randomnum;         }         obj.setrequiredstock(reqstock);         obj.setendstock(end);       } } 

}

now problem: i'm checking if diff variable becomes negative doesnt nothing prints on console, whenever reach the line randomnum=random.nextint((int)diff); program throws following error:

exception in thread "main" java.lang.illegalargumentexception: n must positive     @ java.util.random.nextint(unknown source)     @ managing.final.randomway(final.java:163)     @ managing.final.main(final.java:252) 

can help?

this rather simple. @ these 2 lines:

double diff=obj.getendstock()-obj.getsafetystock(); ... randomnum=random.nextint((int)diff); 

your diff contains difference between end stock , safety stock. if end stock below safety stock, diff contain negative number.

nextint method requires positive integer parameter. if diff negative, you'll error.

edit: in response comment re-read question again , noticed line missed. line:

diff=math.abs(diff)+(1.05*obj.getsafetystock())-obj.getsafetystock(); 

you can 0. (i assuming getsafetystock return positive number - if doesn't, may problem.)

in code, checking whether diff 0 - not doing it, other printing log line.

on whole, may make sense print value of diff regardless of before using parameter nextint - debugging purposes.


Comments

Popular posts from this blog

javascript - jquery or ashx not working -

opencv - DataType<cv::detail::deriv_type>::depth what is it used for -

python 3.x - Mapping specific letters onto a list of words -