2015-06-09 12 views
5

Sto cercando di creare un albero di Natale usando per i loop e annidato per i loop. Per farlo, devo essere in grado di creare una piramide con *. Ho provato innumerevoli volte e sto avendo problemi a crearne uno. Qui è il mio codice:Creazione di un albero di Natale usando per i loop

for(int i=1;i<=10;i++){ 
    for(int j=10;j>i;j--){ 
     System.out.println(" "); 
    } 

    for(int k=1;k<=i;k++){ 
     System.out.print("*"); 
    } 

    for(int l=10;l<=1;l++){ 
     for(int h=1;h<=10;h++){ 
      System.out.print(" "); 
     } 
    } 

    System.out.println(); 
} 

Quello che sto cercando di fare è:

 * 
    *** 
    ***** 
    ******* 
+1

scrivere la logica su un pezzo di carta. –

risposta

6

provare questo codice molto più semplice:

public class ChristmasTree { 

public static void main(String[] args) { 

    for (int i = 0; i < 10; i++) { 
    for (int j = 0; j < 10 - i; j++) 
    System.out.print(" "); 
    for (int k = 0; k < (2 * i + 1); k++) 
    System.out.print("*"); 
    System.out.println(); 
    } 
} 
} 

Esso utilizza 3 anelli:

  • primo per il numero di righe,
  • secondo per la stampa degli spazi,
  • terzo per la stampa degli asterischi.
+0

Grazie ha funzionato. Potresti spiegare perché hai fatto 2 * i + 1 –

+0

Prima iterazione ((2 * 0) +1) = 1 stella. Seconda iterazione ((2 * 1) +1) = 3 stelle. Terza iterazione ((2 * 2) +1) = 5 stelle e così via. – mcw

+0

Vedi per 1 ° fila c'è 1 stella. Per 2 ° ci sono 3, per il 3 ci sono 5. Quindi segue la regola generale di 2 * (n-1) +1. Come il nostro i inizia modulo 0 così (n-1) = i. Quindi numero di stelle in (i + 1) th row = 2 * i + 1. –

7

Puoi farlo con la semplice logica

for (int i = 0; i < 4; i++) 
      System.out.println(" *******".substring(i, 4 + 2*i)); 
0
public class Stars { 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 
     Scanner s=new Scanner(System.in); 
     System.out.println("Enter Row/Column Value::"); 
     int i,j,k,n; 
     n=s.nextInt(); 
     for(i=1; i<n; i++){ 
      for(j=n+(n/2); j>i; j--){ 
       System.out.print(" ");} 
      for(k=1; k<=2*i-1; k++){ 
       System.out.print("*");} 
      System.out.println(""); 
      } 
     for(i=1; i<n+(n/2); i++){ 
      for(j=n+(n/2); j>i; j--){ 
       System.out.print(" ");} 
      for(k=1; k<=2*i-1; k++){ 
       System.out.print("*");} 
      System.out.println(""); 
     } 
      for(i=1; i<n-(n/2); i++){ 
      for(j=n+(n/2); j>1; j--){ 
       System.out.print(" ");} 
      for(k=n/2; k<=(n/2)+1; k++){ 
       System.out.print("*");} 
      System.out.println(""); 
     } 
    } 
} 
+0

sopra il programma stampa albero di Natale. –

+3

Sebbene questo codice possa rispondere alla domanda, fornire un contesto aggiuntivo riguardo a come e/o perché risolve il problema migliorerebbe il valore a lungo termine della risposta. –

-1
import java.util.Scanner; 

public class cmastree{ 

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

     int j; 
     System.out.println ("Enter a number"); 
     j=keyboard.nextInt(); 
     /*take the above part out and change the j variable if you want to set 
     the size*/ 
     for(int i=1; i<=j; i+=2){ 
      int numSpaces = (j-i)/2; 
     for (int k=0; k<numSpaces; k++){ 
      System.out.print(" "); 
      } 
     for(int k=0; k<numSpaces; k++){ 
      System.out.print("*"); 
      } 
      System.out.println(); 
     } 
    } 
} 
Problemi correlati