2010-02-24 4 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의 부분 문자열을 대체하고 매번 최종 색인 값을 하나씩 늘리겠다고 생각했지만 코드화는 확실하지 않았습니다. 나는 다음과 같이 시작했다 :

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 
} 

지금 자바에서 이것을 구현한다. 자바에서

+1

가장 간단한 대답은 여기에 있습니다. –

+3

G - 문제를 해결하지 않고 방향을 제시 한 것과 같습니다. –

0

하나의 추가 변수를 사용하여/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

일이 정답입니다. –

2

:

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를 차단하는 시간이 훨씬 적으므로 훨씬 비효율적입니다. 매우 큰'i' 참으로 :) –

+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

관련 문제