Use array or vector ?

I need to store data into a 3D array i.e. abc[128][128][128]. Every item of the array is an object.
My problem is, if i use 3D array to store the data directly, it is too memory costing and always return OutOfMemoryError!!! Also terribly slow !
Is it better to use vector of vector instead of 3D array? I mean put the 128 objects into a single array and then put 128 single arrays into a vector, lastly put 128 vectors into a new vector.
Or otherwise, who has any other good suggestions to store these 128*128*128 objects?

However, that's small compared to the number ofdistinct objects in that space -- 128^3. So the number
of objects taken up by the arrays or vectors, is less
than 1% of the number of objects in the 3D space
defined by the arrays or vectors.
Sorry, I don't get what you mean ;)
Yes, it is 1% of the number of objects in the 3D
space, but you haven't calculate the 4 bytes int value
used by the int value itself.We're not talking about ints though, are we? The question was about a 3D space of objects.
So, if let say array Object definition uses 2 bytes,
then the RAM needed will be:
Object definition + int values
((128^2 + 128 + 1) * 2) + ((128^3) * 4)
if you create int[128^3], you will only create:
128^3 * 4Given that problem statement, the array object definitions take up 33026 bytes, whereas the int values take up 8388608. So the memory used by the array object definitions is still just 1% of the memory used. By switching to a 1D array of length 128^3, you're saving less than 1% of the memory. The 33026 bytes isn't the problem here.
(((128^2 + 128 + 1) * 2) + ((128^3) * 4)) is a much bigger number than ((128^2 + 128 + 1) * 2).
Just (128^3 * 4) is a much bigger number than ((128^2 + 128 + 1) * 2).
But anyway that's not the problem statement anyway. There are 128^3 potential objects created in the heap. That's going to be a lot more than the arrays or vectors used to reference them.
This is why I think the best solution is to look at the data and see if a better approach can be taken than just using 128^3 buckets.
Another slow but possible solution is using HashMap.
To check coordinate 33, 75, 109, you can use:
map.get(new Integer(33*75*109)] and hope Java garbage
collector runs pretty fast.I wouldn't advise that, because that would cause conflicts between objects at 33,75,109 and 75,33,109, etc. There would be 3! = 6 possible conflicts. If you want to turn the 3D index into a flat 1D index, then multiply each coordinate by a constant to put each into its own range, e.g., (33,75,109)'s 1D index would be (33 * (128^2)) + (75 * 128) + 109.
Hopefully that's less than the maximum int value. It may not be.
This solution works fine only if in vast 128*128*128,
only few hundreds coordinate x,y,z which actually have
a value. This way you can store the value only if
needed.Yes, exactly, if the domain data is sparse, a different approach like this would work better than defining 128^3 data buckets.
If the data is sparse enough, it might be easier to define a 3DCoordinate object to use as the index into the hashtable, than programmatically creating a 1D index.

Similar Messages

  • Is there any way of  using arrays or vectors in JavaScript

    In my JSP page when ever a value in the text field changes i have to store that value before submitting a form. When ever the value in the text field changes i have to use "OnChange" option but i have to store all these values in an array or vector. Is there any other way of doing this. I am using webwork. Can any one help me!!!!!!

    JavaScript arrays are dynamic. You can add new values to the array and the array will grow in size.
    //a is an array of size zero
    var a = new Array();
    a[0] = "something";
    a[1] = "else";
    a[a.length] = "Adding another String at the end of my array";But here's something to think about. If your web site absolutely needs JavaScript, what happens to your site when the user decides to disable JavaScript in his browser....?
    I only use JavaScript to validate the user's input data, but I revalidate server-side in case JavaScript was disabled.

  • Please help, 2D Array of Vectors and Incompatible types :(

    I have a 2D array of vectors called nodeLocations but when I try and access the vector inside I get a compile error.
    My code is something like this:
    nodeLocations[j].addElement(noArc)
    My editor picks up that its a Vector and shows me addElement as an acceptable entry to put after the "." yet the compiler says:
    "addElement(java.lang.Object) in java.util.Vector cannot be applied to (int)"
    Can someone please help?
    Thank you in advance.
    also a related problem:
    I get inconvertible types (says int required) when I try and get an element from a vector stored in a 2D Array. I know that it comes out as an object and so should be cast but it does not seem to work. My code is as follows:
    else if (((int)(nodeLocations[nodeNumber][adjNodeNumber].elementAt(0))) != distance)
    I would appreciate any help anyone can give.
    Similar errors to the above two happen when
    I try a push with a Stack in a vector.
    I try to get something out of the stack inside the vector.

    The Vector class's addElement() method requires an Object parameter. It appears that you're trying to add an int to the Vector. You'll need to create an Integer object and place that into the vector (see sample below) or use the pre-release version of JDK 1.5 which provides autoboxing capabilities.
    int z = 5;
    Integer x = new Integer(z);
    nodeLocations[j].addElement(x);

  • Array of vectors

    if I have an array of vectors how would I got about add elements
    to one of the vectors in the array, also how would I search a specific vectors object for equality on another object.
    example: Vector [] lists = new Vector[61];
    how would I add an ID object to on of the vectors.
    also how would a search a vector for equality with a specific ID
    object.
    thanks

    To add an object to (say) the 20th vector use
    ID id = new ID();
    lists.add(id);
    Searching for equality is similar; use the contains method in the vector class.
    I have not tried this, but it should work I think.

  • Error while using Enumeration and Vectors

    Hi all,
    I am new bee in java i am using enumeration and vectors in my JSP page,
    i want to get the values from JSP page using enumeration and store then in Vector, below is the code, its giving errors saying ArrayIndexoutofException
    pls help, thanx in advance.
              while ( enum.hasMoreElements() )
              String enumString = (String)enum.nextElement();
              String[] enumValue =request.getParameterValues(enumString);
              for(int n=0;n<=enumValue.length;n++)
              tempbean.dbRows.add(enumValue[n]);     //tempbean.dbRows is a vector,
    if I seperate the For block out of While loop then im getting cannot resolve enum variable, bcoz its declared in while loop, I cannot declare it out side of while loop because I dont know the perfect size of the array and it will change dynamically.
    pls help

    Thankyou ,
    It worked out,
    Thank you very much.

  • Why do so many code samples here use Arrays?

    I've seen many code samples here use Arrays. Why? I much prefer to use ArrayLists, and Vectors if I need synchronization or HashSets if I require uniqueness. I don't understand why people are using Arrays when the Collection classes are so useful. You can change the underlying datastructure without changing any of the access code.

    I guess they are faster...
    public class Test1 {
         public static void main(String[] args) {
                Integer zero = new Integer(0);
                   long start = System.currentTimeMillis();
                   for (int j = 0; j < 1000; j++) {
                        Integer[] array = new Integer[10000];
                        for (int i = 0; i < 10000; i++) {
                             array[i] = zero;
                   long finish = System.currentTimeMillis();
                   System.out.println(finish - start);
                   start = System.currentTimeMillis();
                   for (int j = 0; j < 1000; j++) {
                        ArrayList arrayList = new ArrayList();
                        for (int i = 0; i < 10000; i++) {
                             arrayList.add(zero);
                   finish = System.currentTimeMillis();
                   System.out.println(finish - start);
    }~460 ms for array
    ~1600 for ArrayList
    Still, the benefit of the Collections interface and the better OO design of code that uses these classes is probably worth it in most cases, IMO.

  • An array of vectors that contain a user defined class gives: warning: [unch

    I've read two tutorial on Generics and still don't get everything.
    Anyway I have a user defined class called a Part. I have some Vectors of Part objects, and these Vectors of Part objects are stored in an Array of Vectors.
    Amazingly, I got all the checking right so far; however, am now trying to loop through my Array, an pass the individual Vectors to a method:
    //create a single list of all parts numbers
    //add the part number from each vector/part into a new vector of strings
    for(int y=0; y < ArrayOfPartVectors.length; y++) {
        Vector<Part> vTemp = ArrayOfPartVectors[y];
        vAllPartNumbers.addAll(pm.getPartNumbersFromVector(vTemp));
    }I get the following warning:
    com\gdls\partMatrix\PartMatrix.java:75: warning: [unchecked] unchecked conversion
    found   : java.util.Vector
    required: java.util.Vector<com.gdls.partMatrix.Part>
                                    Vector<Part> vTemp = VectorArrayParts[y];
                                                                         ^
    1 warningNow I have put the 'check' (<Part>) in every concievable spot in that statement, and I get a compler error now instead of a warning.
    Any guidance would be appreciated.
    Thank you,

    The problem is not with Vector. If you want to use it that's fine.
    You could also want to use ArrayList because the class is roughly equivalent to Vector, except that it is unsynchronized.
    But your problem is that arrays and generics don't mix well as previously mentioned in the first reply.
    You did not specify the type of ArrayOfPartVectors but I guess it is Vector[], not Vector<Part>[], right?
    So you'll have an unchecked warning when doing the conversion from Vector to Vector<Part> in the assignment within the loop.
    Maybe you tried to use a ArrayOfPartVectors of type Vector<Part>[] instead but found it impossible to create it with new
    You can do it with Array.newinstance() but you'll get an unchecked warning at this line instead of later.
    So mixing generics and arrays will allways result in warnings.
    You should read: [url http://www.angelikalanger.com/Articles/Papers/JavaGenerics/ArraysInJavaGenerics.htm]Arrays in Java Generics.
    Regards

  • Size restrictions on arrays and vectors

    Hi all!!!
    I want to know whether there is any restriction on maximum size of array and vectors.
    If I have thousands of records to be displayed on browser through JSP, can I initialise the arrays/vectors with that no.
    Whether it will have adverse effect on performance.
    Thanks in anticipation

    Array lists (and vectors) use an array as backing data store. And since array indices are ints, the maximum number of elements in an array list is Integer.MAX_VALUE (2 ^ 31 - 1).
    About the performance: if you know how many elements you are going to add (albeit not precisely), you can create the array list with an initial capacity. This will improve performance because a new array is created when an element is to be added but the capacity has been reached.
    Kind regards,
      Levi

  • Arrays and vectors

    Hi
    I'm having a bit of difficulty with the following method
    I have a vector - numbera that is full of integers,
    What I want to do is copy these into in an array but I seem to be having a spot of bother getting this to work !!!
    When I try to print the contents of indexa I just get a null reference returned
    Can anyone help me out !!!
    public int[] indexa()
        int indexa[] = new int[numbera.size()];
        Iterator p = numbera.iterator();
        for (int i = 0; i < numbera.size(); i++)
          indexa[i] = Integer.parseInt(p.next().toString());
           return indexa;
    [\code]

    First,
    Did you fill the vector? What did you fill the vector with? Vectors cannot hold primitive data types (such as int). It always holds Objects, such as Integer. If you did all that already, there sould be stuff in the Vector, and it should not be null.
    Second,
    I don't like vectors, so I never use them. But when I do, I was taught to use Enumerations, not Iterators. Like so:
    Enumeration e = numbera.elements();
    int i = 0;
    while(e.hasMoreElements()){
       Integer elem = (Integer)e.nextElement(); //here i am assuming you put in an Integer
       indexa[i] = Integer.intValue(elem);
       i++;
    }I don't know how to use Iterators with vectors, since I've never done it that way. Maybe my solution is not what you are looking for, but I think it should work (provided I have made no typos).
    :) JenMc

  • Exporting to PDF - How Can I Get A Small File Size When Using Lots of Vector Art?

    I am trying to create a small PDF file for e-book distribution purposes. My Indesign pages contain a variety of photographs, vector icons and vector maps.
    A publisher in Britain who does similar books on a Mac using Creative Suite was able to create a 22-page document very similar to mine (similar icons, graphics, density, etc) that is only 2.84 mb, a small fraction of the file size that I'm getting! I've included a sample page of his below, which is a low-res jpeg, but on the original PDF all of the text and images (except the jpeg cliff background) are super sharp - they look like vectors when you zoom in. I've also included screenshots of his PDF export settings.
    I don't know if he's exporting directly out of Indesign, but my best guess is that he is.
    My vector-based icons, numbers and maps are bloating my PDFs considerably. When I remove them, the Indesign and exported PDF file sizes drop dramatically. For the life of me, I can't figure out how he got such small PDF files sizes using so much vector art! The PDF graphic compression settings don't seem to include any options for vector art.
    My vector art graphics (numbering, icons, maps) are all saved as Illustrator AI files and then placed in Indesign as linked graphics. My best guess as to why I can't achieve smaller PDF files is I'm either doing something wrong with the vector graphics themselves or handling/exporting them improperly out of Indesign.
    I am using CS4 for PC and am on a Dell Machine running Windows 7.

    I am trying to create a small PDF file for e-book distribution purposes. My Indesign pages contain a variety of photographs, vector icons and vector maps.
    A publisher in Britain who does similar books on a Mac using Creative Suite was able to create a 22-page document very similar to mine (similar icons, graphics, density, etc) that is only 2.84 mb, a small fraction of the file size that I'm getting! I've included a sample page of his below, which is a low-res jpeg, but on the original PDF all of the text and images (except the jpeg cliff background) are super sharp - they look like vectors when you zoom in. I've also included screenshots of his PDF export settings.
    I don't know if he's exporting directly out of Indesign, but my best guess is that he is.
    My vector-based icons, numbers and maps are bloating my PDFs considerably. When I remove them, the Indesign and exported PDF file sizes drop dramatically. For the life of me, I can't figure out how he got such small PDF files sizes using so much vector art! The PDF graphic compression settings don't seem to include any options for vector art.
    My vector art graphics (numbering, icons, maps) are all saved as Illustrator AI files and then placed in Indesign as linked graphics. My best guess as to why I can't achieve smaller PDF files is I'm either doing something wrong with the vector graphics themselves or handling/exporting them improperly out of Indesign.
    I am using CS4 for PC and am on a Dell Machine running Windows 7.

  • Help using arrays in java

    HI all,
    I am working on a program that will print out my initials 'A' and 'T' using arrays. I am asked to initialize the first intial to '*' and the second intial to '@'. I wrote the code but the output is wrong. Can someone help me by letting me know what I am doing wrong in my arrray?I just get back my array of 30X30. I also wrote a driver but when I run the program, I really appreciate it so much.
    public class Initial
         private char whichinitial ;
         private int MAX =30;//Maximum amount for 2-d Matrix
         char[][] letterMatrix = new char[MAX][MAX];//2-d Array 30 x30
         private boolean first = true;
         public Initial()
         { //FIlls Array full of '*'s
              whichinitial = '*';
              for(int i=0;i< MAX;i++)
                   for(int j=0;i< MAX;i++)
                        letterMatrix[i][j] = whichinitial;
         public void setLetter(char letter)
         {//Setter for Letter
               whichinitial = letter;
         public char getLetter()
         {//Getter for Letter
              return whichinitial;
         public void firstLetter()
         { //Creates an A shape
              for(int i=0;i< MAX;i++)
                for(int j=0;j< MAX;j++)
                      if((i>0)|| ((i<6) || ((j>0) && (j<29))))
                         letterMatrix[j] =whichinitial;
         public void secondLetter()
         {//Creates an T shape
              first = false;
                   for(int i=0;i <MAX;i++)
                   for(int j=0;j <MAX;j++)
                        if((i>1) ||(j < 29)||(j>5)||(i>10))
                             letterMatrix[i][j] = whichinitial;
         public void display()
         {//Displays the Initials
              if(first)
                   System.out.println("\n \n \n My First Initial," + whichinitial + ", follows:");
              else
                   System.out.println("\n \n \n My Last Initial," + whichinitial + ", follows:");
                   for(int i=0;i <MAX;i++)
                        System.out.println();
                        for(int j=0;j <MAX;j++)
                             if(letterMatrix[i][j] == '*')
                                  System.out.print(" ");
                             else
                                  System.out.print(letterMatrix[i][j]);

    I am trying to write a program using a matrix. The size of the maxtrix should be 30X30. The first initial shoulld be initialized to '*' and the secind initial should be initialized to '@'. Both initials should be 30 characters high and 30 characters wide and the initials should also represent the uppercase letter of your initials. I know that the first initial's matrix needs to be filled up vertically and the second initial needs to be filled horizontally but the output is wrong....PLease Help!
    Message was edited by:
    apples03

  • How to Use the Scalable Vector Graphics API (JSR 226)

    im doin an Application with Maps and locations...
    i need 2 use the Scalable Vector Graphics API (JSR 226)..
    can anyone plz guide me to get it and use the API.. Im using netBeans 5.0
    it will be great help :)
    Regards
    Muhammedh aka MNM

    Thanks Rohan :)
    i did read some stuff from the URLs u gav me :)
    and I manage 2 solve the prob i had :) (Thank God)
    1. downloaded latest version of netBeans (5.5)
    2. Java SDK 6 :D...
    3. the key thing: Wireless tool kit for CLDC 2.5 Beta
    now when u create a project make sure u set the above given tool kit :)
    when u set it.. u get an option 2 select the APIs frm a List.. Check on SVG API :)...
    Other APIs Such as,
    * wireless Messaging API
    * Location API
    and many more...
    Cheers 2 Every1 :)
    regards
    Muhammedh

  • Using arrays in a jsf page

    Hi guys,
    I'm developing an ADF application in JDev 11.1.1.6.0. I have problem about using arrays in jsp page. I have an iterator that brings me data from UCM. I just want to take every documents seperately and use in a Jquery division by division.
    Can i have chance to use an array tag in that page? Or how can i make it possible my work in a different way?
    Thank you so much,
    Erdo

    Hi Frank,
    I've already use an iterator. I just want to take datas and after close the af:iterator tag. Then i will use those datas in a different block.
    My code :
    <af:iterator var="node" value="#{nodes}" id="i1">
    <af:outputText value="#{node.propertyMap['CSGMNEWS_REGDEF:Desc'].asTextHtml}"
    id="ot1"/>
    </af:iterator>
    I want to take all informations from node.PropertyMap[] and then i will set the values of outputText with those informations. I hope I'm clear.
    Regards,
    Erdo
    Edited by: erdo on 20.Mar.2013 10:21

  • Using arrays in apex

    hi i want to know if some can guide me how to use array in apex.
    i have a tabuler report with 4 columns.
    i need to write a validation in the tabuler report for that i need to used array.
    can I directly access the colums as i have shown below? or do i need to decleare this arrays some were in apex?
    e.g
    FOR i IN 1 .. ow_app.g_f01.COUNT
    loop.........................
    LOGIC
    end loop;
    from what i understand i can access each column as ow_app.g_f01,ow_app.g_f02,ow_app.g_f03,ow_app.g_f04 does this make sense?
    thanks a lot.

    Hi user591315 (please tell us your name - we're a friendly group!),
    In answer to this and your previous related post, there is an excellent example of what you're looking to accomplish provided by Denes Kubicek available at http://apex.oracle.com/pls/otn/f?p=31517:41
    Hope this helps,
    John
    If you find this information useful, please remember to mark the post "helpful" or "correct" so that others may benefit as well.

  • Using Arrays in a program

    First, I would like to thank everyone in this forum for all the help they have given me over the past few weeks. With that said, I am currently trying to alter the following code to accept and use arrays to end to produce three seperate results. The program now as three hard coded variables which are
    Amount = 200000.00;
    Term = 30;
    InterestRate = .0575;
    I need to have the program work the same, but produce results for three different Terms and Three different periods. Below is the code the I am working on, I have added two arrays containing the required information. I am having a hard time coming up with a for statment to move the program through the two arrays. Any pushes in the right direction would be great. I left the hard code variable in place, I know that I do need to remove them and alter the equations. I just thought it would be easier for everyone to understand if I left the code in working form.
    import java.math.*;
    import java.text.*;
    import java.util.*;
    // The Payment class displays a predetermined monthly mortgage payment
    public class Payment
         public static void main(String[]arguments)
              //Creates Two Arrays for InterestRates and Terms
              double[] InterestRates = {.0535, .055, .0575};
              int[] Terms = {7, 15, 30};
              //Creates variables
              double Amount;
              int Term;
              double InterestRate;
              //Assigns values to variables
              Amount = 200000.00;
              Term = 30;
              InterestRate = .0575;
              //Alters the display format of Amount variable
              NumberFormat n = NumberFormat.getCurrencyInstance(Locale.US);
              String s = n.format(Amount);
              //Creates variables
              double MonthlyInterestRate;
              int TotalMonths;
              double Payment;
              //Assigns values to variables
              MonthlyInterestRate = InterestRate / 12;
              TotalMonths = Term * 12;
              Payment = Amount* MonthlyInterestRate / (1-(Math.pow((1+MonthlyInterestRate ),(-TotalMonths))));
              //Takes Payment variable and round answer to 2 decimal points
              BigDecimal bd = new BigDecimal(Payment);
    bd = bd.setScale(2, BigDecimal.ROUND_DOWN);
              //Instructions to display various varibles
              System.out.println("Cost of Mortgage "+ s);
              System.out.println("Length of Term " + Term);
              System.out.println("Interest Rate 5.75% ");
              System.out.println("The monthly payment of this loan is $" + bd);
              System.out.println();
              //Creates new set of variables
              double MonthlyInterest;
              double MonthlyPrincipal;
              double TotalInterestPaid;
              int NumberofPayments;
              //Creates Balance variable
              double Balance;
              //Initialization of Balance variable
              Balance = 200000;
              TotalInterestPaid = 0;
              NumberofPayments = 360;
              //Creates a loop that calculates the entire term of loan
              do
              MonthlyInterest = Balance * (InterestRate / 12);
              MonthlyPrincipal = Payment - MonthlyInterest;
              Balance = Balance - MonthlyPrincipal;
              TotalInterestPaid = TotalInterestPaid + MonthlyInterest;
              NumberofPayments = NumberofPayments - 1;
              //Takes current balance and rounds the answer to two digits
              BigDecimal bb = new BigDecimal(Balance);
    bb = bb.setScale(2, BigDecimal.ROUND_DOWN);
              BigDecimal tip = new BigDecimal(TotalInterestPaid);
                        tip = tip.setScale(2, BigDecimal.ROUND_UP);
              System.out.println("New Loan Balance " + bb);
              System.out.println();
              System.out.println("Total Interest Paid " + tip);
              System.out.println();
              System.out.println("Number of Payments remaining " + NumberofPayments);
              System.out.println();
              //The following lines of code pauses the loop to allow the user to read the output
              //The speed of th display can be adujusted to a wide variety of speeds
              try
                   Thread.sleep(400);
                   catch (InterruptedException exc)
              //Loop condition
              while (NumberofPayments > 0);
    //Ends Application

    Try this. It should give you some ideas. :)
    import java.math.BigDecimal;
    import java.text.NumberFormat;
    import java.util.Locale;
    // The Payment class displays a predetermined monthly mortgage payment
    public class Payment {
        public static final NumberFormat CURRENCY_FORMAT = NumberFormat.getCurrencyInstance(Locale.US);
        public static final double[] INTEREST_RATES = {.0535D, .055D, .0575D};
        public static final int[] TERMS = {7, 15, 30};
        public static final double AMOUNT = 200000.00;
        public static final int MONTHS_PER_YEAR = 12;
        public static void main(String[] arguments) {
            for (int t = 0; t < TERMS.length; t++) {
                for (int i = 0; i < INTEREST_RATES.length; i++) {
                    displayPayments(AMOUNT, INTEREST_RATES, TERMS[t]);
    private static void displayPayments(double amount, double interestRate, int term) {
    //Creates variables
    //Assigns values to variables
    double monthlyInterestRate = interestRate / MONTHS_PER_YEAR;
    int totalMonths = term * MONTHS_PER_YEAR;
    double payment = amount * monthlyInterestRate / (1 - Math.pow(1 + monthlyInterestRate, -totalMonths));
    //Instructions to display various varibles
    System.out.println("Cost of Mortgage " + CURRENCY_FORMAT.format(amount));
    System.out.println("Length of Term " + term);
    System.out.println("Interest Rate " + new BigDecimal(interestRate * 100).setScale(2, BigDecimal.ROUND_HALF_UP) + '%');
    System.out.println("The monthly payment of this loan is " + CURRENCY_FORMAT.format(payment));
    System.out.println();
    //Creates new set of variables
    double totalInterestPaid = 0.0D;
    //Creates balance variable, Initialization of balance variable
    double balance = amount;
    //Creates a loop that calculates the entire term of loan
    System.out.println("New Loan balance, Total Interest Paid, Number of Payments remaining");
    for (int numberofPayment = totalMonths; numberofPayment > 0; numberofPayment--) {
    double monthlyInterest = balance * monthlyInterestRate;
    double monthlyPrincipal = payment - monthlyInterest;
    balance -= monthlyPrincipal;
    totalInterestPaid += monthlyInterest;
    //Takes current balance and rounds the answer to two digits
    BigDecimal bb = new BigDecimal(balance);
    bb = bb.setScale(2, BigDecimal.ROUND_DOWN);
    BigDecimal tip = new BigDecimal(totalInterestPaid);
    tip = tip.setScale(2, BigDecimal.ROUND_UP);
    System.out.println(CURRENCY_FORMAT.format(bb.doubleValue()) + ", " +
    CURRENCY_FORMAT.format(tip.doubleValue()) + ", " +
    numberofPayment);
    System.out.println();
    //Ends Application

Maybe you are looking for