2014-09-20 3 views
0

나는차이는

public void AreaOfRectangle() 
{ 
    Console.WriteLine("Enter Width"); 
    Width = Convert.ToInt32(Console.ReadLine()); 
    Console.WriteLine("Enter Length"); 
    Lenth = Convert.ToInt32(Console.ReadLine()); 
    //Width = 24.5; 
    //Lenth = 24.5; 
    //double area; 
} 

를 잘 작동하지만 난 아래의 방법으로 동일하게 작성하는 경우 내가 무엇입니까 아래의 코드로 사용자의 입력을 수용하여 사각형의 면적을 계산하려고 영역의 값이 잘못되었습니다.

public void AreaOfRectangle() 
{ 
    Console.WriteLine("Enter Width"); 
    Width = Console.Read(); 
    Console.WriteLine("Enter Length"); 
    Lenth = Console.Read(); 
    //Width = 24.5; 
    //Lenth = 24.5; 
    //double area; 
} 

두 가지 방법 논리의 차이점은 무엇입니까?

+2

Convert.ToInt32()가 당신을 얻지 못합니다. 24.5 Convert.ToDouble() –

답변

2

According to the documentationConsole.Read()은 다음 문자를 읽습니다.

그래서 당신은 입력 할 경우 :

42 

그런 다음 Console.Read()4 (I 틀리지 않는 경우 int로 52 인 문자로) 돌아갑니다. 그 다음 호출은 2으로, 이는 int으로 50입니다. 기본적으로 다음 문자를 읽고 그것을 정수로 해석합니다.

전체 줄을 읽으려면 Console.ReadLine()을 계속 사용하는 것이 좋습니다.

1

첫 번째 것은 문자열을 읽고 int로 구문 분석하는 것입니다. Enter까지 입력 한 모든 정보를 읽습니다.

두 번째 것은 char입니다. 토머스가 말했듯이 을 입력하고 Enter을 누르는 경우 Console.Read()1이되지만 그 다음에 Console.Read()이있는 경우 2이 표시되고 3이 표시됩니다. 그래서 나는 이것이 당신이 성취하려고 시도하는 것임을 의심합니다.

문자를 곱하여 면적을 계산하려고하면 ... 아무 의미가 없습니다.

내가 사용하는 것이 좋습니다 것입니다 :

int width = 0; 
width = Int32.TryParse(Console.ReadLine(), out width); 

지금 폭이 0 또는 유효한 INT가 될 것입니다.

그리고 의견이 제시 한대로 24.5과 같은 것을 찾고 있다면 Double.TryParse으로 이동하십시오.

+0

argh ... true ... – Noctis

+0

지금 이해하십시오. 빠른 답장을 보내 주셔서 감사합니다. – user1794624