2016-04-01 15 views
0

C#の使用を開始したばかりですが、問題が発生しました。私は、enumを使用する必要があることに答えるために必要な質問があり、ユーザー入力を使用してスイッチをトリガーする必要があります。私はこれまでのところほとんどすべてを把握していますが、一度もエラーが出ています。私はまだこれを自分で解決するためにC#で十分に学んでいないので、本当に助けが必要です。ここに私のコードは次のとおりです。enum(C#)を使用してメソッドを呼び出すためのユーザー入力

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks;  

namespace enumExample 
{ 
    class Program 
    { 
     public enum Operator 
     { 
      add, 
      subtract, 
      multiply, 
      divide 
     } 

     static void Main(string[] args) 
     { 
      System.Console.WriteLine("Please enter an integer"); 
      string leftstring = System.Console.ReadLine(); 
      int left = System.Convert.ToInt32(leftstring); 

      System.Console.WriteLine("Please enter another integer"); 
      string rightstring = System.Console.ReadLine(); 
      int right = System.Convert.ToInt32(rightstring); 

      System.Console.WriteLine("Please enter '0' to add, '1' to subtract, '2' to multiply, and '3' to divide"); 
      string op = System.Console.ReadLine(); 
      int x = System.Convert.ToInt32(op); 

      double sum = Calculate(left, right, Operator.op); 
      System.Console.WriteLine("The answer to your problem is {0}", sum); 
      System.Console.ReadLine(); 
     } 

     public static double Calculate(int left, int right, Operator op) 
     { 
      double sum = 0.0; 

      switch (op) 
      { 
       case Operator.add: 
        sum = left + right; 
        break; 
       case Operator.subtract: 
        sum = left - right; 
        break; 
       case Operator.multiply: 
        sum = left * right; 
        break; 
       case Operator.divide: 
        sum = (double)left/right; 
        break; 
       default: 
        System.Console.WriteLine("An error occurred"); 
        System.Console.ReadLine(); 
        break; 
      } 

      return sum; 
     } 
    } 
} 

私は私のプログラムをコンパイルするために行くとき、私はこのエラーを取得:

Code: CS0117 
Description: 'Program.operator' does not contain a definition for 'op' 
Project: enumExample 
File: Program.cs 
Line: 33 
Suppression State: Active 

これを読むために時間を割いていただきありがとうございます、そして任意の助けを事前に感謝します。

答えて

0

あなたはこのここに持っている:あなたは、Operator.opを言っている

double sum = Calculate(left, right, Operator.op); 

。しかし、あなたの列挙型が含まれています

public enum Operator 
    { 
     add, 
     subtract, 
     multiply, 
     divide 
     op <----- You don't have one of these, which you'd have to in order to pass in Operator.op. 
    } 

はおそらく、あなたは(double sum = Calculate(left, right, x);を意味つまりそこのx、ないOperator.op

+0

ありがとうございました! – SheepyCow

1

あなたのオペレータの列挙型は行で

を "OP" と呼ばれる値を持っていません。 33あなたが持っている:

double sum = Calculate(left, right, Operator.op); 

私はあなたが実際に書きたかったものを推測しているが

です
double sum = Calculate(left, right, (Operator)x); 

これは、適切な列挙値にintをキャストします。

このようなことをもっとやりたいのであれば、各列挙値の値を明示的に設定することが考えられます。

public enum Operator 
    { 
     add = 0, 
     subtract = 1, 
     multiply = 2, 
     divide = 3 
    }; 
+0

私は彼がハードコードされたものの代わりに解析された演算子を使用したいと思うと思います –

+0

私は今理解しています。私は希望の答えを反映するために私の応答を編集しました。 –

+0

opは文字列であるため、(演算子)xは動作しません。 –

関連する問題