-
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
-
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...
-
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-