2016-10-04 6 views
0

私はCシャーププログラミングの初心者です。私は、ユーザーの入力をintに取るような電卓のような機能を開発するプログラムに固執しています選択された選択肢に応じて目的の操作を実行し、出力結果を出力するスイッチループが実行されます。結果を表示してケースを破棄すると、プログラムは、続行するか否かをユーザーに尋ね、フィードバックは比較される文字変数に格納され、選択された場合はプログラムの実行が開始ラベルにリダイレクトされます。以下 は、そのためのコードです:私は電卓のタイプを開発する必要があります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』を示していますがmscorlib.dllで発生しました」私は純粋主義者であることだった場合、私はラベルを失い、WHを使用すると言っていると思いますがch = Console.ReadKey(true).KeyChar;

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

を交換し、一部修正

+0

私はYに'goto.startを入力した後だと思う; '先頭にジャンプし、'Console.ReadLine()'を入力押した後、Y(現在の行のままです)を読み込み、それを変換しようとします数。例外が発生する場所があります(完全なスタックトレースを持つのが良いでしょう)。 –

+0

アプリケーションをデバッグして、エラーが発生している場所を確認することをお勧めします。あなたのFormatExceptionは 'Console.ReadLine()'を引数として渡す 'Convert.ToInt32()'を呼び出そうとしているところで発生します。 –

+0

@GeoffJamesまったく起こりません! –

答えて

5

私を提案しなさいileループ。

1

私はあなたのコードをテストしました。 以下の後Console.Readは()を入力し、余分な単一の文字をバッファにされて読んでいるのでライン

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

だけで次の行を追加します。 read()の後にバッファをクリアするには、以下の行を追加してください。

Console.ReadLine(); 
+0

ええ、あまりにも正しいです! –

関連する問題