[Resolvido]Algoritmo que gera uma arvore em asteristico

Olá bom dia, bom estou com este codigo abaixo, que tirei como exemplo para gerar uma arvore, alterei o codigo troquei valores o que eu entendi coloquei comentario nao sei se esta de acordo correto, abaixo esta o codigo e o enunciado
Enunciado:

[quote]Faca um programa baseado no conceito de matriz para gerar o desenho,
conforme o exemplo abaixo.
*
**




| |[/quote]

Codigo:

[code]package algoritmos;

public class ProgramaGera {
public static void main(String[] args) {

	/*
	 * int metade, diagonal; diagonal = 9; metade = diagonal/2;
	 * 
	 * for(int i=0; i<diagonal;i++){ for(int j=0;j< metade - i; j++)
	 * System.out.println(" "); for(int j=0; j<2*i+1;j++)
	 * System.out.println("*");
	 */

	int posicao, t;
	posicao = 6;
	t = 1;// qtd de asteristico
	for (int i = 1; i <= 5; i++) {// for externo conta qtd de linhas de
		// asteristico
		//i = 6;
		for (int j = 0; j <= 10; j++)
			if (j == posicao)// se j for igual posicao condicao true
			{
				for (int i2 = 1; i2 <= t; i2++)//for para qtd de asteristicos por linha
				
					System.out.print("*");// imprime

				t = t + 2;// contagem de asteristico, exem: imprime 1
				// asteristico na segunda volta t e 1 * +2 que da = 3 na segunda linha
				 posicao--;// posicao decrementa 
				

			} else {
				System.out.print(" ");
				// System.out.println("||");

			}
		System.out.println();//pula para baixo, para nao ficar na mesma linha 
		
		//for(int x=0;x<=1;x++){
			//System.out.println(" \t ||");
		//}
	}
}

}
[/code]

for (int j = 0; j <= 10; j++)este for aqui que nao consegui entendelo modifiquei aumentei valores pude perceber que cada vez que colocava um valor maior dava espaco do canto esquerdo na impressao no console.
Tentei colocar o || abaixo da arvore nao obtive exito.
podem me ajudar a entender essa logica, desde já agradeço.

[list]saida do codigo abaixo no console:[/list]

tenta assim:

public static void main(String[] args) {
	int nivel = 5;
	imprimeArvore(nivel);
}

private static void imprimeArvore(int nivel) {
	for (int linha = 1; linha <= nivel; linha++) {
		for (int coluna = 1; coluna <= linha; coluna++) {
			System.out.print("*");
		}
		System.out.println();
	}
	System.out.println("||");
}

Muitíssimo obrigado robson_costa.

eu estava tentando dessa forma:
saiu a arvore meio que certa mais, sei que nao e a forma correta que fiz mais consegui fazer com que a arvore saísse.

[code]package ExeAlgoritmo;

public class GeraArvoreEmAster {

public static void main(String[] args) {
	    String [][] mat = new String[3][2];  
	      
	   mat[0][0] = ""+" "+" "+" "+" "+" "+"  "+"  * "+" "+" "+" ";  
	   mat[0][1] = ""+" "+" "+"  "+"  "+" * "+" * "+" "+" "+" "+""; 		     
	   mat [1][0] = "  "+"   "+  "* "+" * "+" * "+" "+" "+" "+" "+"";  
	    mat [1][1] = ""+"  "+" "+"* "+" * "+" * "+" * "+" "+" "+" "+"";		      
	   mat [2][0] = " "+""+" * "+" * "+" * "+" * "+"* "+" "+" "+"";  
	   mat [2][1] = " "+" "+" "+" "+" "+" | "+" | "+""+""+""+""+""+""+""+"";  
	    
	   for (int i = 0; i <=2 ; i++) { 
		   for(int j=0;j<=1;j++)
	       System.out.println(mat[i][j] );  
	   }
}

}

Console:
*
* *
* * *



  |  | 

[/code]

[code]
public class DesenhaArvore {

public static void main(String[] args) {
	
	int i=1;	
	String copa = "";
	System.out.printf("%11s \n",(copa="*"));
	copa = "";
		
			
	while (i<9) {
		i = i+1;
		for (int x = 1; x<i; x++){
			if(i%2==0){
				continue;
			}else
			copa += "*";
			System.out.printf("%10s",copa );
			
			copa += "*";
			System.out.printf("%-11s\n",copa );
			break;
			
		}
	}
			System.out.printf("%10s","|" );
			System.out.printf("%s \n","|" );
	}

}[/code]

o seu codigo ta ok so nao imprimiu em formato arvore, coloquei uns comentarios no codigo, poderia ver se esta certo.

[code]public static void main(String[] args) {
int nivel = 5;
imprimeArvore(nivel);// cria um metodo que chama dentro do parametro o
// valor de nivel
}

//metodo para imprimir
private static void imprimeArvore(int nivel) {
	for (int l = 1; l <= nivel; l++) {//le linha, ate linha menor que nivel = 5
		for (int c = 1; c <= l; c++) {////le coluna, ate coluna menor que linha ?
			System.out.print(""+""+""+"*"+""+""+"");//imprime
		}
		System.out.println();
	}
	System.out.println("||");
}

}
[/code]

desculpe mais nao entendi aqui:
for (int c = 1; c <= l; c++) {////le coluna, ate coluna menor que linha ?

comentei seu codigo, ve se é isso porque tu usou printf e nao o System.out.println, os comentários quanto ao %10s, ve se esta de acordo, sei que o %s le caractere, a questao do 10 e do -11 que ficou meio confuso.
codigo:

public class ArvoreDesenha {
	public static void main(String[] args) {
		int i = 1;
		String copa = "";// copa da arvore, como string caractere
		System.out.printf("%11s", (copa = "*"));// percenti S para ler
												// caracteres,le ate 11 casas
		copa = " ";//imprime, entra no while

		while (i < 9) {// enquanto i =1 for menor que 9
			i = i + 1;// igual a i++; enquanto for menor i+1 serve para
		// incrementar a cada passagem.
			for(int x=1;x<i;x++){
				//se o resto da divisao de i por doi for 0, continua
				if(i%2 ==0){
					continue;
				}else{
					copa += "*";//se nao for divisivel entra no else incrementa mais 1 *
					System.out.printf("%10s",copa);//imprime ate 10 casas
					
					copa += "*";
					System.out.printf("%-11s",copa);//insere decrementando
					break;
				}
			}
			System.out.printf("%10s","|");
			System.out.printf("%s \n","|");

		}
	}

}


saida  no console:
          *         || 
         * **                 || 
         || 
       *** ****               || 
         || 
     ***** ******             || 
         || 
   ******* ********           || 

Thanks you, abraços.

Olá, pessoal!

O meu ficou assim:

[code]/* Arvore

  • Autor: Delano Lima
  • Data: 19/10/2011
    */

import javax.swing.JOptionPane;
public class Arvore{
public static void main(String[] args){
int altura = Integer.parseInt(JOptionPane.showInputDialog(“Qual a altura da árvore?”));
for(int i = 0; i < altura; i++){
for(int j = 1; j < altura2; j++){
if(j > i+altura || j < altura-i)
System.out.print(" “);
else
System.out.print(”
");
}
System.out.println("");
}
for(int j = 0; j < altura-2; j++)
System.out.print(" “);
System.out.println(”| |");

}

}[/code]

Abraço!