2014-05-09 4 views
0

StringBuilder를 사용하여 목록을 단일 문자열로 바꿉니다. 문자열에 줄 바꿈을 넣지는 않지만 문자열에 추가 된 각 목록 값에 대해 새 줄을 자동으로 추가합니다.StringBuilder가 자동으로 새 줄을 만듭니다.

enter image description here

어디에 줄 바꿈이에서 오는 :

for (int i = 1; i <= ruleN; i++) 
{ 
    string fizz = "F"; 
    string buzz = "B"; 
    string fizzBuzz = "FB"; 
    List<string> numberSet = new List<string>(); 
    if(i % ruleA == 0 && i % ruleB != 0) //if i is devisible by A 
             //but not B 
    { 
     numberSet.Add(fizz); 
    } 
    if(i % ruleB == 0 && i % ruleA != 0) //if i is devisible by B 
             //but not A 
    { 
     numberSet.Add(buzz); 
    } 
    if(i % ruleA == 0 && i % ruleB ==0) //if i is devisible by both 
             //A and B 
    { 
     numberSet.Add(fizzBuzz); 
    } 
    if(i % ruleA != 0 && i % ruleB != 0) //if i is devisible by 
             //neither A nor B 
    { 
     //convert the number to a string and add it to list numberSet 
     string undevisible = Convert.ToString(i); 
     numberSet.Add(undevisible); 

    StringBuilder Builder = new StringBuilder(); 
    foreach (string number in numberSet) 
    { 
     // Append each string to the StringBuilder overload. 
     Builder.Append(number).Append(" "); 
    } 
    string output = Builder.ToString(); 
    Console.WriteLine(output); 

출력은 다음과 같이 찾고 끝?

+2

'Console.WriteLine (출력) '루프 내부입니다. 밖에 있어야할까요? –

+0

리비전 2가 된 편집은이 질문의 관련 코드를 제거합니다. 코드를 복원했지만 원래 코드 들여 쓰기가 매우 이상했기 때문에 들여 쓰기가 올바른지 확실하지 않습니다. 어쩌면 일부 중괄호가 누락되었을 수 있습니다. – cremor

답변

5

그들은 Console.WriteLine(output)에서 왔습니다. 귀하의 for 루프 내에 있습니다.

+3

이것을 확장하기 위해 @ user3620903은'Console.Write (output)'로 전환 할 수 있습니다. –

+0

고맙습니다. 나는 그것을 알아 차리지 못했다! –

+0

for 루프 외부에서 Console.Writeline (출력)과 stringbuilder 및 list initiations을 이동했습니다. 모든 것이 지금 작동 중입니다. –

2

각 'i'에 대해 StringBuilder를 작성하고 Console.WriteLine을 작성합니다. 그것은 개행이다. StringBuilder를 만들기 전에 원저자가 멈추어야 만 했을까?

0

Console.WriteLine은 정확히 첫 번째 for 루프를 반복 할 때마다 콘솔에 새 행을 씁니다. 한 줄에 모든 것을 원한다면 for 루프 뒤에 console.writeline을 쓰고 콘솔에 쓸 모든 것을 저장하는 다른 stringbuilder 객체를 사용하는 것이 좋습니다.

0

은 첫 번째 루프는 그래서 모든 반복하면 새로운 가치와 새로운 캐릭터 빌더를 만든 다음 새 줄에 인쇄에 println()를 사용하는 방법,

는 또한 최적화를 시도해 인쇄, 콘솔에 인쇄 한 후 폐쇄하여 왜 if 문 안에 Builder.Append()를 사용하지 않고 목록 유형으로 변수를 정의하지 않습니까?

코드가 정확히 이것을 수행하고 있다면 해당 목록에 메모리를 낭비 할 필요가 없습니다.

안부

하나 Bizhani

관련 문제