2017-02-27 71 views
-1

我在C#中使用enums來計算不同形狀的面積。下面是我的代碼: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,輸出結果是:在x

Invalid 
Invalid 
+2

您在'x'參數的切換,我想你想在'ob1'切換? – stuartd

+1

你的'switch'應該改成'switch(ob1)'嗎? – Peter

回答

1

通行證形狀枚舉類不是int x變量

  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類中定義了枚舉。從Area類枚舉出來,你會看到* Area.Shape.Circle *將不再有效。 :)編輯:錯字 –

0

switch聲明交換機,你總是傳遞爲15。你應該打開ob1枚舉變量,你不需要演員。