2016-10-04 2 views
0

저는 C 날카로운 프로그래밍을 처음 접했고 사용자 입력을 int로 가져 오는 기능과 같은 계산기를 개발하는 프로그램이 필요합니다. 데이터 유형을 choice라고 부르면 사용자로부터 두 피연산자를 모두 읽은 후 스위치 루프가 실행됩니다. 선택한 선택에 따라 원하는 작업을 수행하고 출력 결과를 제공합니다. 결과를 보여주고 사례를 파기하면 프로그램은 사용자에게 Continue 여부를 묻고 피드백은 비교 될 문자 변수에 저장되고 선택된 경우 프로그램의 실행을 시작 레이블로 리디렉션합니다.계산기 타입의 프로그램을 C 코드로 작성해야합니다. 날카로운 코드

public static void Main(string[] args) 
{ 
    int choice,op1,op2; 
    char ch; 
    start: 
    Console.WriteLine("Enter First Operand"); 
    op1 = Convert.ToInt32(Console.ReadLine()); 
    Console.WriteLine("Enter Second Operand"); 
    op2 = Convert.ToInt32(Console.ReadLine()); 
    Console.WriteLine("Enter your Input \n1. For Addition \n2.For Subtraction \n3.For Multiplication \n4.For Division"); 
    choice = Convert.ToInt32(Console.ReadLine()); 
    switch (choice) 
    { 
     case 1: 
      Console.WriteLine(op1+op2); 

      break; 
     case 2: 
      Console.WriteLine(op1 - op2); 
      break; 
     case 3: 
      Console.WriteLine(op1*op2); 
      break; 
     case 4: 
      Console.WriteLine(op1/op2); 
      break; 
     default: 
      Console.WriteLine("Please enter valid Choice"); 
      break; 
    } 
    end: 
    Console.WriteLine("Do you want to Continue(Y/N)?"); 
    ch=Convert.ToChar(Console.Read()); 
    if (ch == 'Y') 
    { 
     goto start; 
    } 
    else if (ch == 'N') 
    { 
     Console.ReadKey(true); 
    } 
    else 
    { 
     Console.WriteLine("Please Enter Valid Choice"); 
     goto end; 
    } 
} 

하지만 그것은 처음으로 원하는 출력 코드를 실행 만하면 내가 선택할 때 '를 Y'는이 유형 'System.FormatException'의 오류 "예외를 보여줍니다 다음은 동일한 코드입니다 호야 내가 가지고있는 것 순정 주의자가 레이블을 잃고 말을하고 어를 사용할 수 있다면

+0

내가 Y 'goto.start 입력 한 후 생각은, 입력을 누른 후 (현재 행에 아직도있다)에 Y를 읽고 '상단과 'Console.ReadLine()로 점프'와로 변환하려고 숫자. 아마도 예외가 발생합니다 (전체 스택 추적을 갖는 것이 좋을 것입니다). –

+0

응용 프로그램을 디버깅하여 오류가 발생한 곳을 확인하는 것이 좋습니다. 'Console.ReadLine()'을 인수로 사용하여'Convert.ToInt32()'를 호출하려고 시도하는 곳에서 FormatException이 발생합니다. –

+0

@GeoffJames 정확히 어떻게됩니까! –

답변

5

ch = Console.ReadKey(true).KeyChar;

비록 함께 ch=Convert.ToChar(Console.Read());

교체 나에게 일부 수정 제안 mscorlib.dll에서 "발생 ile 루프.

1

귀하의 코드를 테스트했습니다. 아래 후 Console.Read()가 입력 여분의 단일 문자를 버퍼에 읽기 때문에 라인

ch=Convert.ToChar(Console.Read()); 

은 다음 줄을 추가합니다. read() 후에 버퍼를 지우려면 아래 줄을 추가하면됩니다.

Console.ReadLine(); 
+0

그래 맞습니다. –