2017-02-27 13 views
-1

私はenumsをC#で使用して、さまざまな形状の領域を計算しています。以下は私のコードです:C# - 無効な出力

using System; 
class Area 
{ 
    public enum Shape{Circle,Square}; 
    public void AreaShape(int x,Shape ob1) 
    { 
     double a; 
     switch(x) 
     { 
      case (int)Shape.Circle: 
       a=Math.PI*x*x; 
       Console.WriteLine("Circle "+a); 
       break; 
      case (int)Shape.Square: 
       a=x*x; 
       Console.WriteLine("Square "+a); 
       break; 
      default: 
       Console.WriteLine("Invalid"); 
       break; 
     } 
    } 
} 
class MyTestOne 
{ 
    public static void Main(String[] a) 
    { 
     Area obj1=new Area(); 
     obj1.AreaShape(15,Area.Shape.Circle); 
     obj1.AreaShape(15,Area.Shape.Square); 
    } 
} 

以下はエラーを生成します。

obj1.AreaShape(15,Shape.Circle); 
obj1.AreaShape(15,Shape.Square); 

は、どのように私は次の出力を得ることができますか?

Circle 225*pi 
Square 225 

私はArea.Shape.CircleArea.Shape.Squareを使用すると、出力は次のとおりです。あなたが常に15として渡しているx

Invalid 
Invalid 
+2

int型のx変数ではないパスシェイプ列挙型クラスは、私はあなたがob1' 'に切り替えたいと思いますか? – stuartd

+1

'switch 'を' switch(ob1) 'に変更する必要がありますか? – Peter

答えて

1

  switch (ob1) 
      { 
       case Shape.Circle: 
        a = Math.PI * x * x; 
        Console.WriteLine("Circle " + a); 
        break; 
       case Shape.Square: 
        a = x * x; 
        Console.WriteLine("Square " + a); 
        break; 
       default: 
        Console.WriteLine("Invalid"); 
        break; 
      } 
+0

ありがとう...それは働いた –

+0

私たちがなぜArea.Shape.Circleを使用し、Shape.Circleを使用しないのかを教えてもらえますか? –

+0

Areaクラスでenumを定義したためです。 Areaクラスからenumを取ると、* Area.Shape.Circle *はもはや有効ではありません。 :)編集:タイプミス –

0

あなたswitch声明スイッチ、。 ob1列挙型変数をオンにする必要があります。キャストは必要ありません。あなたは 'X'のパラメータに切り替えている

関連する問題