2014-09-25 5 views
-3

둘 중 하나의 루프 만 사용하여이 코드를 다시 작성한다는 사실을 알고 있습니까?두 개의 루프를 하나로 결합하는 방법 (자바로)

String message = "" ; 
for(int i=0; i<8; i++) { 
    for (int j = 0; j<i; j++) { 
     message = message + "*"; 
    } 
    message = message + "\n"; 
} 
JOptionPane.showMessageDialog(null, message); 
+9

왜이 쓰기 않았고 왜 필요합니까를 다시 작성, 짧고 : 재미 또 다른 하나? – ControlAltDel

+1

루프에'String'을 만들 때, 가변적 인'StringBuilder' 타입을 사용하는 것이 더 효율적입니다 (가능하다면, 버퍼에 적절한 시작 크기를 설정하십시오). – Bobulous

+0

나는이 질문이 단순히 개인적인 의견을 제시하는 대답으로 이어진다는 것에 동의하지 않는다. 이 질문은 기능적으로 중첩 된 for 루프와 동일한 코드를 요청하고 각 응답의 정확성을 테스트 할 수 있습니다. 의견은 일부 역할을하지 않습니다. – Bobulous

답변

1

이 코드는 요구 사항을 만족 :

String message = "" ; 
String m = ""; 
for(int i = 0; i < 8; i++) 
{ 
    message = message + m + "\n"; 
    m = m + "*"; 
} 
JOptionPane.showMessageDialog(null, message); 
+0

미안하지만 저는 신인이에요. 오른쪽에있는 체크 표시를 클릭해야합니까? 만약 내가 그렇게했다면, 다시 –

2
for(int i = 0; i < 8; i++){ 
    message += "*******".substring(0, i) + "\n"; 
} 

또한 당신은 StringBuilder를 사용해야합니다.

+0

@Durandal i도 잘보고 수정했습니다. – sleeplessnerd

+0

'i'가'7 '의 값 이상으로 올라가지 않으면 왜 8 개 이상의 별이 소스 문자열에 있습니까? – Bobulous

+1

왜냐하면 나는 정확하게 계산하지 못했기 때문입니다. – sleeplessnerd

2

한 가지 방법 :

String message = ""; 
String line = ""; 

for(int i=0; i<8; i++) { 
    message = message + line + "\n"; 
    line = line + "*"; 
} 
+0

모양이 반 피라미드가되어 두 번째 루프가있는 것입니다 –

+0

이것을'message = message + line + "로 변경해야한다고 생각합니다. \ n"; 그렇지 않으면 두 개의 개행 문자로 시작하고 OP의 중첩 루프는 시작하지 않습니다. – Bobulous

+0

네가 맞았다. 고마워! – Thompson

1

그래서,이 재미있는 솔루션, 맛 광산의 게시물로 : 나는 '

 String message = ""; 
     for (int i = 0; i < 7; i++) { 
      message = "*\n" + message.replaceAll("\n", "*\n"); 
     } 
1

어떻게 작동하는지 그리고 어떻게, 왜 작동하는지 알아 내려면 독자에게 맡기십시오 :)

여기
String message = ""; 
    int n = 8; 
    int s = (int) Math.round((n + 1) * (n * 0.5)); 
    int j = 0, l = 1; 
    for (int i=0; i < s; ++i) { 
     int k = Integer.signum(j - i)^1; 
     message += "*\n".charAt(k); 
     l += k; 
     j += (l * k); 
    } 
+0

미친, 너를 좋아한다! :) – Aivean

0

String message = "\n"; 
    for (int i = 0; i < 7; i++) { 
     message = message + "*" + message.substring(message.length() - i - 1); 
    } 
관련 문제