# ASCII Triangle

• 03-12-2010, 11:08 PM
physics
ASCII Triangle
Hi,
I need to create a triangle based on a height value given by the user.
The base of the triangle is calculated with:

Code:

```private int getTriangleWidth( int triangleHeight )     {         return 2 * triangleHeight - 1;     }```
and the method I am trying to use the make the triangle is:

Code:

```private void printTriangle( int height, int margin, boolean pointUp )     {             int base = this.getTriangleWidth( height );             int m;             int n;             int o;                         if( pointUp )             {                 for( n = 0; n < height; n++ )                     {                             for( m = 1; m <= margin; m++ )                         {                                 System.out.print( " " );                         }                     for( n = 0; n < height; n++ )                     {                                                        for( o = -1; o < n; o++ )                         {                                 System.out.print( "*" );                         }                         System.out.println( " " );                             }             }     }```
If the user inputs 5, this results with a triangle that looks like this (I haven't included my driver method that actually tests the output):
*
**
***
****
*****

but I need an equilateral triangle: if the user inputs 5, it should have a base of 9 and a height of 5 and it should not have a right angle as the one above.
I understand that in my code above I don't have it depending on the base value at all but I'm not sure how to include it in or how to get the whitespace to come before the * in an even way so that I get my desired result.

Any hints would be wonderful
• 03-12-2010, 11:34 PM
StormyWaters
Here's a clue, you can use the getTriangleWidth(int) method to return the number of stars needed for each level of the triangle.

You aren't even using that method yet...
• 03-13-2010, 02:00 AM
gcalvin
Also, the number of spaces on the left is half the difference between the widths of the longest row and the current row:

(widthOfLongestRow - widthOfCurrentRow) / 2

-Gary-