2010-02-24 8 views
0

J'essaie d'imprimer ce motif en utilisant une boucle for Java mais je suis coincé.Utilisation d'une boucle for pour imprimer un motif en Java

zzzzz 
azzzz 
aazzz 
aaazz 
aaaaz 
aaaaa 

Je peux imprimer:

a 
aa 
aaa 
aaaa 
aaaaa 

utilisant:

String i = " "; 
int a = 0; 
for (i="a";i.length()<=5;i=i+"a") 
    System.out.println(i); 

et

zzzzz 
zzzz 
zzz 
zz 
z 

utilisant:

String i = " "; 
for (i="zzzzz";i.length()>0;i=i.substring(0,i.length()-1)) 
    System.out.println(i); 

Mais je n'arrive pas à comprendre comment les combiner. Je pensais à remplacer la sous-chaîne de i et augmenter la valeur de l'index de fin par un à chaque fois, mais pas sûr de le coder. J'ai commencé avec quelque chose comme ceci:

String i = " "; 
String b = " "; 
for (i="zzzzz";i="aaaaa";i=i.replace(i.substring(0,)) 
    System.out.println(i); 

Des idées?

Répondre

8

pseudocode:

for(i <- 0 to 5) { 
    print(i times "a" followed by (5 - i) times "z") 
    print a new line 
} 

mettre en œuvre maintenant cela en Java.

+1

La réponse la plus simple ici. –

+3

G - Comme la façon dont vous lui avez donné la direction sans résoudre le problème –

0

Utilisez une variable supplémentaire pour conserver la position de la bordure a/z. Augmentez la valeur de cette variable dans chaque itération.

1
Z = 5 
A = 0 

while (Z >= 0) 
{ 
    for (i = 0; i < A; i++) print 'A'; 
    for (i = 0; i < Z; i++) print 'Z'; 
    print newline; 
    ++A; 
    --Z; 
} 

est un sens.

5

Vous pouvez augmenter ou diminuer plus d'une variable avec la boucle

for (int a = 0, z = 5; a <= 5 ; a++, z--) 
{ 
    System.out.println(a+" "+z); 
} 

serait sortie

0 5 
1 4 
2 3 
3 2 
4 1 
5 0 
+0

+1 Ceci est la bonne réponse. –

2

En java:

public class Pattern { 

    public static void main(String [] args) { 

     for(int i=0;i<6;i++) { //This works out the number of lines 
      String line = ""; 
       for(int a=0;a<i;a++) { 
        line+="a"; 
       } 

       for(int z=0;z<(5-i);z++) { 
        line+="z"; 
       } 

       System.out.println(line);  
     } 

    } 

} 
+0

Pour un grand «i», cela va être beaucoup plus inefficace, mais comme vous passez beaucoup moins de temps à bloquer pour les E/S, il se pourrait qu'il très grand 'i' en effet :) –

+0

@Chinmay Kanchi - c'est très peu probable pour ce morceau de code particulier. – JonH

+0

Les deux bons points. Je pensais que ce serait plus facile à comprendre pour l'affiche telle qu'elle est écrite. – apchester

1
String AA = "aaaaa"; 
String ZZ = "zzzzz"; 

for (int i = 0; i <= 5; i++) { 
    System.out.println(AA.substring(i) + ZZ.substring(5 - i)); 
} 
+0

J'aime celui-ci :) –

0

Vous pouvez essayer ce qui suit:

public class pattern2 
{ 
    public static void main() 
    { 
     int i,j,k,num=0; 
     for(i=1;i<=6;i++) 
     { 
      for(j=1;j<=num;j++) 
      System.out.print("a"); 
      for(k=6;k>i;k--) 
       System.out.print("z"); 
      System.out.println(); 
      num++; 
     } 
    } 
} 
+0

Très mauvais formatage. Quelle est la 'réponse parfaite !!!!' faire là? – MikkoP

+0

Faites attention à votre retrait la prochaine fois. Gardez à l'esprit que votre solution doit être claire pour l'OP – Littm