Pirâmides com asteriscos

Olá pessoal, sou iniciante em java e queria algumas dicas de que rumo tomar nessa questão:
Entrada
Informe o número de pirâmides: 3
Informe a altura da pirâmide 1: 3
Informe a altura da pirâmide 2: 2
Informe a altura da pirâmide 3: 4
Saída

http://img821.imageshack.us/img821/9906/catsbbn.jpg

Eu já pensei em várias formas de fazer, mas tou com dificuldade em desenvolver.
Primeiro eu pensei em ir “desenhando” as Strings. Mas ai ia ficar ruim porque não dá pra modificar as Strings e tal.
Depois eu pensei em fazer só com System out prints, mas por conta de ter mais de uma pirâmide não ia dar pra pra colocar uma ao lado da outra.
E por último, tou pensando em fazer as pirâmides com chars ’ ’ e ‘*’. Ai eu faria uma array de duas dimensões, e ia imprimindo cada ‘linha’ (a primeira dimensão seriam as linhas, e a segunda cada caractere da linha). Ex.: A linha da base das pirâmides: System.out.print(p1[0]+p2[0]+p3[0] + “\n”); A linha de cima: System.out.print(p1[1]+p2[1]+p3[1] + “\n”);.

Mas ai eu tou com problemas na hora de criar um método que cria as pirâmides, porque ai eu tou pensando em imprimir cada pirâmide assim:
Ex.: altura: 2
_ _ _ * _ _
_ * _ * _ *
(cada underline é um espaço)
O problema é pra criar a linha de cima por exemplo. O que eu faço pra colocar só um * e o resto com os espaços? Na linha de baixo dá pra fazer um for, e quando o índice for par botar ’ ', se for ímpar ‘*’. Mas e nas de cima, como eu faço?

Bom, acho que expliquei minhas dúvidas ;P.
Eu queria algumas dicas sobre que rumo tomar na resolução e tal.
Obrigada!

Para imprimir os espaços…

System.out.println(" "+" "+"*"+" "+" "+"\n"
                  +" "+"*"+" "+"*"+" "+"\n"+
                   "*"+" "+"*"+" "+"*");

Foi mal, acho que não expliquei direito.
Na entrada, o usuário pode digitar qualquer número de pirâmides, e pra cada pirâmide ele pode digitar qualquer número para ser a altura.

a solução que encontrei foi essa acho que não é a melhor mais funcionou

agora é só ler os comentários intender o código e adaptar para mais de um triangulo

public class Triangulo { public static void main(String[] args){ int alt = 10; // a altura do triangulo for(int i=0; i<alt; i++){ for(int j=0; j< (1+((alt-1)*2))*2-1; j++){ //a primeira linha tem 1 * (1+) //a cada uma das outras linha se adiciona + 2 * ((alt-1)*2) //a cada * tem um espaço (*2) //o ultimo * não leva espaço (-1) if((((alt-1)*2))>=j-(i*2) && (((alt-1)*2))<=j+(i*2)){ if(j%2==0){ System.out.print("*"); }else{ System.out.print(" "); } }else{ System.out.print(" "); } } System.out.println(); } } }

se precisar é só postar
até mais!

Considero este problema não como um exercício básico de iniciantes, mas sim como um desafio para aqueles que já tem uma boa base de programação.

Experimente desenvolver como sugerido abaixo. Em caso de dificuldades no processamento, favor postar seu código.

{
  definir contador_de_linhas que, partindo da maior altura, 
  será decrementado até efetuar a linha das bases; para cada ocorrência dele:
  {
    definir (e inicializar, como vazio) string_da_linha 

    para cada pirâmide:
    {
      definir espaço, como segue:
      {
        para contador_de_linhas MAIOR ou IGUAL à altura da pirâmide, 
        espaço será uma unidade menor que o dobro da altura da pirâmide
        para contador_de_linhas MENOR do que a altura da pirâmide,
        espaço será o dobro de (contador_de_linha decrementado de uma unidade) 
      }
     definir estrelas, como segue:
     {
       para contador_de_linhas MAIOR do que a altura da pirâmide, 
       preencher estrelas com ' '

       para contador_de_linhas IGUAL à altura da pirâmide, 
       preencher estrelas com '*'

       para contador_de_linhas MENOR do que a altura da pirâmide,
       preencher estrelas com '-' concatenado com _N_ vezes '*-',
       sendo _N_ calculado por uma unidade a mais do que o dobro de (contador_de_linha MENOS altura da pirâmide)
     }
    complementar string_da_linha com espaço concatenado com estrelas concatenado com espaço
    }
  imprimir
  }
}