Java Sequential Alphabet Triangle Pattern

Beginner
6 min read
Updated: Sep 2026
3 programs
Live preview

What Is This Pattern?

A sequential alphabet triangle grows like a right-angled star triangle, but letters keep advancing across the whole figure — they do not reset to A on each row.

Remember
Rule: one running char k; print then k++
      Row i prints i letters

A
B C
D E F
G H I J
K L M N O     ← 5 rows (15 letters, A–O)

Contrast with Program 1, where every row starts over at A. Here a single k lives outside the outer loop and only moves forward.

How to Solve It

Keep one letter cursor, print it on each cell, then advance — optionally separate letters with spaces.

MethodIdeaBest for
Spaced rowsprint(k), optional space, then k++Readable demos, interviews
Compact rowsSame k++ logic without spacesDenser output once the idea clicks

Pseudocode

Pseudocode
k = 'A'
for i from 1 to rows:
    for j from 1 to i:
        print k (no newline)
        if j < i: print " " (no newline)
        k = next letter
    print newline

Cheat sheet

GoalPattern
Start the cursorchar k = 'A'; before the outer loop
Walk each rowfor (int i = 1; i <= rows; i++)
Print i lettersfor (int j = 1; j <= i; j++)
Advance foreverSystem.out.print(k); k++;
Space between lettersif (j < i) System.out.print(" ");
End the rowSystem.out.println();
A–Z-safe heightrows(rows+1)/2 ≤ 26 → max 6 rows

Printing Letters vs Starting a New Line

APIEffectUse for
System.out.printStays on the same lineEach letter and each space
System.out.printlnEnds the current lineAfter the inner loop

Print characters without a newline, then end the row once.

Live Preview

Change the row count and the sequential triangle updates instantly — including letter totals and the last letter used.

Whole numbers from 1 to 7. Six rows stay in A–Z (21 letters); seven needs 28 and continues past Z.

Live result 5 rows · A–O · 15 letters
A
B C
D E F
G H I J
K L M N O

Worked Walkthrough — rows = 4

Trace each outer value of i and watch k keep advancing — never reset.

iLetters printedPrinted rowk after row
1AAB
2B, CB CD
3D, E, FD E FG
4G…JG H I JK

Total letters: 1 + 2 + 3 + 4 = 10 = 4×5/2. That triangular sum is why time is O(n²).

Java Programs

Three complete programs: fixed height with spaces, Scanner input, and a compact no-space variant. Use View Output to reveal sample results.

Example 1 — Fixed rows = 5

Hard-coded height with spaces between letters — ideal for first demos.

Java
public class SequentialTriangle {
    public static void main(String[] args) {
        char k = 'A';

        for (int i = 1; i <= 5; i++) {
            for (int j = 1; j <= i; j++) {
                System.out.print(k);
                if (j < i) System.out.print(" ");
                k++;
            }
            System.out.println();
        }
    }
}

How It Works

1. Start the cursor. k = 'A' before any loop — it must outlive each row.

2. Outer loop picks the row width. Row i prints exactly i letters.

3. Inner loop prints and advances. print(k), optional space, then k++ so the next cell gets the next letter.

4. Break the line. println() after the inner loop; k keeps its value for the next row.

Example 2 — User Input Version

Read the height at runtime. Prefer hasNextInt() and clamp for A–Z (shown in the tip below).

Java
import java.util.Scanner;

public class SequentialTriangleInput {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        System.out.print("Enter the number of rows: ");
        int rows = sc.nextInt();

        char k = 'A';
        for (int i = 1; i <= rows; i++) {
            for (int j = 1; j <= i; j++) {
                System.out.print(k);
                if (j < i) System.out.print(" ");
                k++;
            }
            System.out.println();
        }

        sc.close();
    }
}

How It Works

1. Prompt and read. Ask for a row count, then store it with sc.nextInt().

2. Same running-k core. Only the outer bound changes — the print and advance logic matches Example 1.

3. Safer input tip. Prefer hasNextInt() and keep the letter count in A–Z when you want that limit:

Safer input
if (!sc.hasNextInt()) {
    System.out.println("Enter rows so letters stay in A–Z (max 6).");
    return;
}
int rows = sc.nextInt();
if (rows < 1 || rows * (rows + 1) / 2 > 26) {
    System.out.println("Enter rows so letters stay in A–Z (max 6).");
    return;
}

Example 3 — No Spaces

Same sequence without spaces between letters — denser formatting only.

Java
public class SequentialTriangleCompact {
    public static void main(String[] args) {
        char k = 'A';

        for (int i = 1; i <= 5; i++) {
            for (int j = 1; j <= i; j++) {
                System.out.print(k);
                k++;
            }
            System.out.println();
        }
    }
}

How It Works

1. Same cursor. k still starts at 'A' and advances after every letter.

2. Drop the spacer. Remove the if (j < i) print(" ") line — the sequence is unchanged.

3. Same row break. println() still ends each row after the inner loop.

Edge Cases & Pitfalls

Check these before calling the solution done.

Reset k each row

Program 1 by mistake

If you set k = 'A' inside the outer loop, every row restarts at A. Keep k outside.

k++ once per row

Repeated letters

Increment inside the inner loop after each print. Advancing only once per row repeats the same letter across wide rows.

println inside

Column of letters

If println sits inside the inner loop, each letter lands on its own line. Call it only after the inner loop.

Past Z

Cap the height

Seven rows need 28 letters. Cap so n(n+1)/2 ≤ 26, or stop when k > 'Z'.

rows = 1

Single A

Output is just A — a good sanity check.

Bad input

Check hasNextInt

nextInt() throws on letters — prefer hasNextInt() and keep the triangular letter count in range.

Time and Space Complexity

ProgramTimeExtra space
Spaced / compact loopsO(rows²)O(1)

Total letters printed = 1 + 2 + … + n = n(n+1)/2, which is still quadratic in n. Spaces add only a linear factor of the same order.

Key Takeaways

  • One cursor: declare k before the outer loop and never reset it per row.
  • Print then advance: print(k); k++; on every inner-loop step.
  • Break the row: print for letters/spaces; println after the inner loop.
  • Complexity: O(n²) time from the triangular letter count; O(1) extra space.

One line: for each row i, print the next i letters from a shared cursor k, then println.

Frequently Asked Questions

Because k is updated after every printed character and is not reset inside the outer loop. That is what makes the sequence continuous across the triangle.
A single running character starts at A and increments after every print. Row 1 prints 1 character, row 2 prints 2, row 3 prints 3, so you see consecutive letters across the whole triangle.
Because each cell must print a new next letter. If you incremented only once per row, the wider rows would repeat the same letter.
System.out.print stays on the same line. System.out.println ends the current line. Letters (and optional spaces) use print; the row break uses println after the inner loop.
1+2+…+n = n(n+1)/2. For 5 rows that is 15 letters (A through O).
O(n²) where n is the number of rows. Total System.out.print calls for letters equal n(n+1)/2.
Plain char++ continues past Z into the next Unicode/ASCII values. Cap rows so n(n+1)/2 ≤ 26, or stop when k > 'Z', if you want A–Z only.
Check sc.hasNextInt() before sc.nextInt() and clamp rows so the triangular letter count stays in range for your alphabet policy.

Did you know?

Unlike Program 1 (letters reset to A each row), this pattern uses one running character that increments after every print. Letters stay consecutive across the whole triangle: A, then B C, then D E F, and so on.

Next: Odd-Length Triangle

Rows grow as A, ABC, ABCDE, … — end letter steps by two each time.

Program 14 tutorial →

About the author

Mari Selvan M P
Mari Selvan M P 🔗

Developer, cloud engineer, and technical writer

  • Experience 12 years building web and cloud systems
  • Focus Full Stack Development, AWS, and Developer Education

I write practical tutorials so students and working developers can learn by doing—from databases and APIs to deployment on AWS.

12 people found this page helpful