2010-02-24 50 views
0

我想用Java中的for循环打印出这种模式,但我有点卡住了。使用for循环在Java中打印模式

zzzzz 
azzzz 
aazzz 
aaazz 
aaaaz 
aaaaa 

我可以打印:

a 
aa 
aaa 
aaaa 
aaaaa 

使用:

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

zzzzz 
zzzz 
zzz 
zz 
z 

使用:

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

但我无法弄清楚如何将它们结合起来。我正在考虑替换i的子字符串,并且每次将结尾索引的值增加1,但不确定如何编码。我从这样的事情开始:

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

任何想法?

回答

8

伪代码:

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

现在实现这个Java编写的。

+1

这里最简单的答案。 –

+3

G--就像你给他的方向而不解决问题的方式 –

0

使用一个附加变量来保持a/z边界的位置。在每次迭代中增加该变量的值。

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; 
} 

是一种方式。

5

可以增加或减少一个以上的变量与循环

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

将输出

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

+1这是正确的答案。 –

2

在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

对于大型'i',这将会效率低得多,尽管因为你花费更少的时间阻止I/O,它可能会变成一个非常大'我'确实:) –

+0

@Chinmay Kanchi - 这是非常不可能的这段代码。 – JonH

+0

这两点都不错。我确实认为,尽管撰写海报会更容易理解。 – 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

我喜欢这个:) –

0

你可以尝试以下操作:

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

非常糟糕的格式。在那里做什么“完美答案!!!!”? – MikkoP

+0

下次请注意您的缩进。请记住,OP的解决方案必须清晰 – Littm