2012-04-21 5 views
0

while 루프는 1-20의 정수를 표시하지만 줄 당 단지 5 개의 정수를 표시해야합니다. 줄 당 5 개의 정수를 얻을 수 없습니다. 그렇게하는 가장 좋은 방법은 무엇입니까?Javascript while 루프 정수

+0

당신도이 직접 시도 적이 있습니까? – elmigranto

+0

예, 그렇지만 당신이 가진 방식대로는 아닙니다. 내 질문에서 알 수 있듯이 지금 코딩이 다소 기본적인 것입니다. –

+1

코드 조각을 게시하면 시점을 배우는 데 더 효과적 일 수 있기 때문에 묻습니다. 어떤 실수를했는지, 미래에 그것을 피하는 방법을 이해할 수있을 것입니다. 비슷한 "안녕하세요 - 세계"에서 그렇게 분명하지는 않을지 모르지만, IMO는 자신이 한 일을 항상 게시하는 것이 좋습니다. – elmigranto

답변

0

여기에 문자열을 구축하고 결과에 경고 상자를 표시하는 솔루션입니다) = 이전 답변에 더 while 루프를 참조하지 않습니다. 테스트에

var i = 0, result = ""; 

while (i++ < 20) { 
    result += i + " "; 

    // check to see if we're at 5/10/15/20 to add a new-line 
    if (i % 5 === 0) { 
     result += "\n"; 
    } 
} 

alert(result); 

jsFiddle : http://jsfiddle.net/willslab/KUVkX/3/

+0

코드를 아주 약간 정리했습니다. 동의 해 주셔서 감사합니다. 코드에 대해 궁금한 점이 있으면 알려 주시기 바랍니다. –

0

당신이 할 수있는 ...

if (! (i % 5)) { 
    // Create new line. 
} 

jsFiddle.

1

5의 배수 뒤에 다음 항목이 있는지, 현재 항목이 첫 번째 항목이 아닌지 확인하십시오. 그럴 경우 줄 바꿈도 인쇄하십시오. 예를 들어 :

for(var i = 1; i <= 20; i++) { 
    print(i); // Or however you're outputting it 

    if(i % 5 === 1 && i > 1) { 
     print('\n'); 
    } 
} 
0

function generateLine(start, nElements, separator) { 
    var i = start; 
    var range = []; 
    while (range.length < nElements) range.push(i++); 
    return range.join(separator) + '\n'; 
} 

function generate(start, end, elementsInLine, inlineSeparator) { 
    var lines = []; 
    while (start < end) { 
    lines.push(generateLine(start, elementsInLine, inlineSeparator)); 
    start += elementsInLine; 
    } 

    return lines.join(''); 
} 

console.log(generate(1, 20, 5, ' ')); 
+0

이것은 훌륭한 솔루션입니다. 제네릭 함수를 작성하려고 생각했습니다. 나는 이해하기가 쉽지 않을 것이라고 확신했다. –