2017-02-27 1 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); 

를? 내가 Area.Shape.CircleArea.Shape.Square 사용하는 경우

Circle 225*pi 
Square 225 

, 출력은 : 당신은 항상 15로 전달하는 x

Invalid 
Invalid 
+2

, 당신이 ob1''에 전환 할 생각 변수? – stuartd

+1

'switch '를'switch (ob1)'로 변경해야합니까? – Peter

답변

1

패스 모양 열거 클래스 X 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 클래스에 enum을 정의했기 때문에. Area 클래스에서 열거 형을 가져 오면 * Area.Shape.Circle *는 더 이상 유효하지 않습니다. :) 편집 : 오타 –

0

귀하의 switch 문 스위치,. ob1 열거 형 변수를 켜야하므로 캐스트가 필요하지 않습니다.