Print Powers of Two

From CompSciWiki
Revision as of 12:40, 6 April 2010 by LesE (Talk | contribs)

Jump to: navigation, search

Back to the Program-A-Day homepage

Problem

Remember that a while loop will execute infinitely until a specified condition is met. A for loop is similar except that the number of iterations is specified as an argument for the loop. Using both for and while loops, create a program that prints the powers of 2 from <math>2^0</math> <math>2^9</math>.


Your output should look something like this:

2 to the power of 0 is 1
2 to the power of 1 is 2
2 to the power of 2 is 4
2 to the power of 3 is 8
2 to the power of 4 is 16
2 to the power of 5 is 32
2 to the power of 6 is 64
2 to the power of 7 is 128
2 to the power of 8 is 256
2 to the power of 9 is 512

Do not use any of Java's Math class functions. .

 

SideSectionTitle goes here.

SideSection goes here.

Solution

You will need to declare 2 variables for this problem, one for the exponent and one for the answer.

    int exp;
    int ans;

You know that you need the powers of 2 from <math>2^0</math> <math>2^9</math>, your program will need to loop through 10 times. Since the number of iterations is known, you should use a for loop to calculate each exponent. Note that the variable 'i' is declared inside the loop. This is the counter for the loop. While it is good programming practice to declare all your variables at the beginning of each method, it is common to declare variables this way in a loop statement.

    for (int i=0; i<10; i++)
    {
      ans=1;
      exp=i;


Because <math>2^0 = 1</math>, it is a special case. It doesn't fit nicely into the rest of the powers of 2 pattern since 1 is not evenly divisible by 2. We can use a while loop to account for this by testing to see if the exponent is greater than 0. Since in the first iteration it is not, the while loop is skipped, printing the correct result.

      while(exp>0)
      {

Here, the answer is multiplied by 2. Notice that 'ans *= 2' is the same as 'ans = ans * 2'. It is just a little shorter to write. This works with all arithmetic operators.

        ans *= 2;

The while loop is exited and the answer is printed to the console. The loop repeats until 'i' reaches 10, which is the exit condition.

        exp --;
      }
			
      System.out.println("2 to the power of " + i + " is " + ans);
    }
  }	
}

Code

class PowersOfTwo
{
  public static void main (String[] args)
  {
    int exp;
    int ans;
		
    for (int i=0; i<10; i++)
    {
      ans=1;
      exp=i;
			
      while(exp>0)
      {
        ans *= 2;
        exp --;
      }
			
      System.out.println("2 to the power of " + i + " is " + ans);
    }
  }	
}
Back to the Program-A-Day homepage