2017-01-25 3 views
0

이 코드 블록에 문제가 있습니다.문자열을 유니 코드로 변환하는 데 사용하는 코드

 Console.WriteLine("What is your name?"); 
     string PlayerName = Convert.ToInt32(Console.ReadLine()); 
     Console.WriteLine(PlayerName); 

내가하려는 것은 컴퓨터가 입력 한 이름을 읽고 귀하의 이름인지 물어보십시오. 내 이름을 입력 한 직후에 예외가 있습니다. Convert.ToInt32는 내가 사용하기로되어있는 것이 아니며 대신 내 질문은 내가 대신 넣어야한다는 것입니다.

프로그래밍에 익숙하지 않고 유니 코드라고 불리는 지 잘 모르겠습니다. 죄송합니다.

+0

유니 코드 문자열이 바이트 단위로 표시되는 방법을 알고 싶습니까? – Markeli

답변

2

Console.ReadLine() 문자열을 반환합니다 필요는 변환을 할 수 없습니다 :

Console.WriteLine("What is your name?"); 
    string PlayerName = Console.ReadLine(); 
    Console.WriteLine(PlayerName); 
+0

오, 오케이. 고맙습니다. – NotaXHammer

1

Convert.ToInt32(String)는 "상응하는 32 비트 부호있는 정수로 숫자의 지정된 문자열 표현을 변환합니다." 콘솔에 정수 값을 입력하지 않았기 때문에 오류가 발생했습니다.

귀하의 PlayerName 변수는 유형 string의, 그리고 Console.ReadLine()의 반환 값은 이미 string, 그래서 당신이 어떤 변환이 필요하지 않습니다. 유니 코드 문자를 처리하는 경우

0

, 당신은 당신이 그 안에 유효한 정수 값을 전달하지 않으면 너무

Console.InputEncoding = Encoding.Unicode; 
Console.OutputEncoding = Encoding.Unicode; 

Console.WriteLine("What is your name?"); 
string PlayerName = Console.ReadLine(); 
Console.WriteLine(PlayerName); 
2

Convert.ToInt32() 던져 오류를 캐스팅과 같은 적절한 인코딩을 설정해야 할 수도 있습니다. 따라서, 당신은 그것을 정상적으로 체크하고 interger 값을 얻을 필요가 있습니다. 이를 위해 Int32.TryParse(input, out val)을 입력하고 정수 값을 가져올 수 있습니다.

예 :

Console.WriteLine("What is your name?"); 
    var value = Console.ReadLine(); 
    int intVal; 
    if(Int32.TryParse(value, out intVal)) 
    { 
     Console.WriteLine(intVal); 
    } 

당신이 원하는 경우

만 인쇄하면에서는 ReadLine에서 가지고 무엇을 : 당신은 단지 정수 값을 인쇄하려면

int value; 
if(Int32.TryParse(your_input, out value)) 
{ 
// if pass condition, then your input is integer and can use accordingly 
} 

그래서, 당신의 프로그램은 다음과 같이 될 것입니다 방법을 사용하면 다음을 가질 수 있습니다 :

Console.WriteLine("What is your name?"); 
    Console.WriteLine(Console.ReadLine()); 
관련 문제