Length

hey,

i'ver develop a programme using a while and for loop to diplay in a table the results of 2^n where 1<=n<64.

However i don't know how to modify the loop to limit the resuts to 10 digits. Also i wish to right align the numbers displayed in the n column.

If anyone knows how to do this, please let me know. If ye want to jazz up the presentation too fire away! thanks!

Here is my code:

/*Computes 2^n where 1<=n<64 and displays in a table*/

class Numbers
{
      public static void main(String[] args)
      {
            byte n = 1;      //declare n, the power, as a byte. initialised at 1 and will not excced 64
            double answer;      //solution of 2^n

            System.out.println("n \t2^n"); //print header of table output

            while (n<64) //iterate loop while n is less than 64
            {
                  answer = Math.pow(2,n); // set answer to 2^n
                  System.out.println(n + "\t" + answer); //print answer
                  n++; //increment n by 1
            } // end of while loop
            

            /*for (n=1; n<64; n++)
            {
                  answer = Math.pow(2,n); // set answer to 2^n
                  System.out.println(n + "\t" + answer); //print answer
                  n=n++; //increment n by 1
            }//end of for loop*/

            
      }//end of main
}//end of class



Thanks as ever

Dinny
dirtydinnyAsked:
Who is Participating?
 
TimYatesCommented:
something like:

-----------

import java.text.* ;

class Numbers
{
  public static void main( String[] args )
  {
    byte n = 1 ; //declare n, the power, as a byte. initialised at 1 and will not excced 64
    double answer ; //solution of 2^n

    DecimalFormat df = new DecimalFormat( "0.##########E00" ) ;
    System.out.println( "n \t2^n" ) ; //print header of table output

    while( n < 64 ) //iterate loop while n is less than 64
    {
      answer = Math.pow( 2, n ) ; // set answer to 2^n
      String sAnswer = df.format( answer ) ;
      while( sAnswer.length() < 15 )
        sAnswer = " " + sAnswer ;
      System.out.println( n + "\t" + sAnswer ) ; //print answer
      n++ ; //increment n by 1
    } // end of while loop

    /*for (n=1; n<64; n++)
               {
         answer = Math.pow(2,n); // set answer to 2^n
         System.out.println(n + "\t" + answer); //print answer
         n=n++; //increment n by 1
               }//end of for loop*/

  } //end of main
} //end of class
0
 
TimYatesCommented:
Hope this is sort of what you wanted...

btw, the DecimalFormat bit limits it to 10 decimal places, and the while loop pads the strings out to a max of 15 chars :-)

Tim
0
 
CEHJCommented:
You'll get better output with a BigInteger:

import java.text.* ;
import java.math.BigInteger;

class Numbers
{
      public static void main( String[] args )
      {
            BigInteger bi = new BigInteger("2");
            System.out.println( "n \t\t\t2^n" ) ; //print header of table output
            System.out.println("---------------------------");
            for(int i = 1;i < 64;i++) {
                  String current = bi.pow(i).toString();
                  while(current.length() < 19)
                        current = " " + current;
                  System.out.println(i + "\t" + current);

            }
      } //end of main
} //end of class
0
Cloud Class® Course: Amazon Web Services - Basic

Are you thinking about creating an Amazon Web Services account for your business? Not sure where to start? In this course you’ll get an overview of the history of AWS and take a tour of their user interface.

 
TimYatesCommented:
you and your BigIntegers ;-)
0
 
CEHJCommented:
Yes, maybe i should create a subclass called 'BigPal' - i'm surprised it isn't final
0
 
TimYatesCommented:
Ooooh...me too >_<
0
 
objectsCommented:
long answer = 0;
for (byte n=1; n<64 && (answer=(long) Math.pow(2, n))<10000000000L; n++)
{
0
 
objectsCommented:
This'll right align your numbers:

StringBuffer out = new StringBuffer();
out.setLength(10 - s.length());
out.append(s);

I'd also suggest not using tabs to align your table and instead add the number of spaces you require.
0
 
objectsCommented:
public static void main(String[] args)
{
   long answer = 0;
   for (byte n=1; n<64 && (answer=(long) Math.pow(2, n))<10000000000L; n++)
   {
      rightAlignValue(n, 2);
      rightAlignValue(answer, 15);
      System.out.println();
   }
}
      
private static void rightAlignValue(long value, int len)
{
   String s = Long.toString(value);
   StringBuffer out = new StringBuffer();
   out.setLength(len - s.length());
   out.append(s);
   System.out.print(out);
}
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.