A right-angled triangle star pattern prints a left-aligned staircase of * characters: row i has exactly i stars.
Remember
Rule: on row i, print i stars
*
**
***
****
***** ← 5 rows
In Java you solve it with two nested for loops: the outer loop picks the row, the inner loop prints stars on that row, then System.out.println() moves to the next line. Once this clicks, inverted triangles, pyramids, and hollow shapes become much easier.
Approach
How to Solve It
Two ways to emit the same shape — start with nested loops, then optionally shorten with String.repeat (Java 11+).
Method
Idea
Best for
Nested loops
Outer = rows, inner = stars via print
Learning, interviews, exams
"*".repeat(i)
Build a whole row in one call
Shorter demos once loops click
Pseudocode
Pseudocode
for i from 1 to rows:
for j from 1 to i:
print "*" (no newline)
print newline
Print characters without a newline, then end the row once.
Try it
Live Preview
Change the row count and the triangle updates instantly — including the triangular star total.
Whole numbers from 1 to 20. Tap a chip or type a value — the preview redraws as you go.
Live result5 rows · 15 stars
*
**
***
****
*****
Trace
Worked Walkthrough — rows = 4
Trace each outer-loop value of i and count how many times the inner loop runs.
i
Inner j
Printed row
Stars
1
1..1
*
1
2
1..2
**
2
3
1..3
***
3
4
1..4
****
4
Total star prints: 1 + 2 + 3 + 4 = 10 = 4×5/2. That triangular sum is why time is O(n²).
Code
Java Programs
Three complete programs: fixed rows, Scanner input, and a String.repeat shortcut. Use View Output to reveal sample results.
Example 1 — Fixed rows = 5
Hard-coded height — ideal for first demos and screenshots.
Java
class RightTriangle {
public static void main(String[] args) {
int rows = 5;
for (int i = 1; i <= rows; i++) {
for (int j = 1; j <= i; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
Output
*
**
***
****
*****
How It Works
1. Set height.rows = 5 means the triangle has five lines.
2. Outer loop picks the row.i runs from 1 to rows.
3. Inner loop prints stars. For each i, j runs from 1 to i, so row i gets exactly i stars via System.out.print("*").
4. Break the line.System.out.println() after the inner loop starts the next row.
When i = 1 you get *; when i = 2 you get **; and so on up to five stars.
Example 2 — User Input Version
Read the row count at runtime with Scanner. Prefer hasNextInt in real apps (shown in the tip below).
Java
import java.util.Scanner;
class RightTriangleInput {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("Enter the number of rows: ");
int rows = sc.nextInt();
for (int i = 1; i <= rows; i++) {
for (int j = 1; j <= i; j++) {
System.out.print("*");
}
System.out.println();
}
sc.close();
}
}
Output (when user enters 7)
Enter the number of rows: 7
*
**
***
****
*****
******
*******
How It Works
1. Prompt and read. Ask for a row count, then sc.nextInt() stores the integer.
2. Same nested-loop core. Only the source of rows changes — the print logic matches Example 1.
3. Safer input tip.nextInt() throws on letters. Prefer:
Safer input
if (!sc.hasNextInt()) {
System.out.println("Enter a positive whole number.");
return;
}
int rows = sc.nextInt();
if (rows < 1) {
System.out.println("Enter a positive whole number.");
return;
}
Example 3 — String.repeat (Java 11+)
Build each row in one call — same shape, no explicit inner star loop.
Java
class RightTriangleRepeat {
public static void main(String[] args) {
int rows = 5;
for (int i = 1; i <= rows; i++) {
System.out.println("*".repeat(i));
}
}
}
Output
*
**
***
****
*****
How It Works
1. One outer loop. Still walk i from 1 to rows.
2. Build the row."*".repeat(i) creates a string of length i filled with stars.
3. Print and advance.println prints that string and ends the line.
Learn the two-loop version first (Examples 1–2) so you can explain both bounds in an interview; treat this as a polish shortcut afterward.
Edge Cases & Pitfalls
Check these before calling the solution done.
println inside
Column of stars
If println is inside the inner loop, each star lands on its own line. Use print for stars; println only after the inner loop.
j <= rows
Rectangle, not triangle
Inner bound must be j <= i. j <= rows prints a filled rectangle.
No println
One endless line
Omitting the row break glues every star onto a single line.
rows = 1
Single star
Output is just * on one line — a good sanity check.
rows ≤ 0
Empty output
Outer loop never runs. Validate and re-prompt for interactive programs.
Bad input
Check hasNextInt
nextInt() throws on letters — prefer sc.hasNextInt() first.
Analysis
Time and Space Complexity
Program
Time
Extra space
Nested loops (Examples 1–2)
O(rows²)
O(1)
String.repeat (Example 3)
O(rows²)
O(rows) per temporary row string
Total stars printed = 1 + 2 + … + n = n(n+1)/2, which is still quadratic in n.
Remember
Key Takeaways
Rule: row i prints exactly i stars.
Two loops: outer = rows, inner = stars with System.out.print.
Break the row: call println only after the inner loop.
Complexity:O(n²) time from the triangular star count; O(1) extra space for nested loops.
One line: for each row i, print i stars with print, then println.
Frequently Asked Questions
The outer loop runs i from 1 to rows. For each row i, the inner loop runs j from 1 to i and prints a star. Row 1 prints 1 star, row 2 prints 2 stars, and so on.
You need one loop for which row you are on and another for how many characters belong on that row. Nested for loops express that directly.
System.out.print stays on the same line. System.out.println ends the current line. Stars use print; the row break uses println after the inner loop.
Reverse the outer loop so i runs from rows down to 1, for example for (i = rows; i >= 1; i--). The first line then has rows stars. See Program 2.
O(n²) where n is the number of rows. Total print calls equal 1+2+…+n = n(n+1)/2.
Yes. System.out.println("*".repeat(i)) prints a full row in one call (Java 11+). Nested loops are better for learning; repeat is a handy shortcut later.
Check sc.hasNextInt() before sc.nextInt() so bad input does not throw InputMismatchException.
The outer loop never runs, so nothing is printed. Validate and prompt again if you want a clear user message.
🤔
Did you know?
Row i prints exactly i stars. Total stars for n rows is the triangular number n(n+1)/2 — the same count that makes this pattern O(n²).