2011-10-12 3 views
1

나는 숯불을 주기적으로 읽으려고하는데 왜 잘못되었는지 모르겠다. 여기에 내 코드는 다음과 같습니다사이클에서 문자 읽기

int sizeOfOurArray; 
    string resultString; 
    char buffer; 
    resultString = ""; 


    Console.WriteLine("Введите количество элементов массива: "); 
    sizeOfOurArray = int.Parse(Console.ReadLine()); 

    char[] ourArray = new char[sizeOfOurArray]; 

    for (int i = 0; i < ourArray.Length; i++) 
    { 
     Console.WriteLine("Введите значение элементу под номером {0}: ", i); 
     buffer = (char)Console.Read(); 
     resultString += buffer.ToString() + " "; 
    } 

    Console.WriteLine(resultString); 
    Console.ReadKey(); 

결과는 다음과 같습니다 답변 http://xmages.net/storage/10/1/0/a/6/upload/27c2a69a.png

PS 감사합니다, 정말 도움이되었다!

+1

번호를 물어 보시겠습니까? 그런 다음에 여러 번 다른 성격을 요구합니까? 귀하의 질문에서 명확하지 않습니다. – IanNorton

답변

5

문제는 사용자 조회수가 돌아올 때 Console.Read아무것도를 반환 할 것입니다 -하는 (다중 호출에)가 반환됩니다 캐리지 리턴과 라인 피드을 포함하여 문자 의 각을 가리 킵니다.

당신은 잠재적으로 한 번에 한 줄을 읽은 다음 첫 번째 문자 걸릴 수

: (. 나는 개인적으로 반복 연결보다는 StringBuilder를 사용하는 거라고하지만 다른 문제입니다 참고)

string line = Console.ReadLine(); 
// TODO: Handle the user just hitting return... 
char buffer = line[0]; 

2
string input = Console.ReadLine(); 
resultString += (String.IsNullOrEmpty(input)) ? "" : input[0].ToString(); 

이 해결합니다.

+2

컴파일되지 않습니다. –

+0

이제 완료됩니다. :) – bzlm

+0

답변 됨 편집 됨 ... –

2

사용 Console.ReadKey()과 같이 하나의 문자를 읽어 :

int sizeOfOurArray; 
     string resultString; 
     char buffer; 
     resultString = ""; 


     Console.WriteLine("Введите количество элементов массива: "); 
     sizeOfOurArray = int.Parse(Console.ReadLine()); 

     char[] ourArray = new char[sizeOfOurArray]; 

     for (int i = 0; i < ourArray.Length; i++) 
     { 
      Console.WriteLine("Введите значение элементу под номером {0}: ", i); 
      buffer = Console.ReadKey().KeyChar; 
      resultString += buffer.ToString() + " "; 
     } 

     Console.WriteLine(); 
     Console.WriteLine(resultString); 
     Console.ReadKey(); 

희망이

0

코드에 약간의 변화하는 데 도움이 나를 위해 작동합니다

using System; 
using System.Text; 

public static class SOQ { 
    public static void Main(string[] argv){ 

    Console.Error.Write("Enter the number of characters: "); 

    // far from ideal but illustrates your code 
    var count = int.Parse(Console.ReadLine()); 

    var buffer = new StringBuilder(); 

    for (int i = 0; i < count; i++){ 
     Console.Error.Write("\n{0}:",i+1); 
     var c = (char)Console.Read(); 
     buffer.Append(c.ToString()); 
    } 

    Console.WriteLine(); 
    Console.WriteLine("Result: `{0}'", buffer.ToString()); 

    } 
}