2013-07-21 4 views
0

다음은 내가 결코 완료 할 수없는 수업 과제입니다.생성자를 사용하여 메서드를 호출하는 방법 (C#)?

나는 생성자를 만들고이 메서드를 호출하려고한다. 결코 작동하지 않습니다. 나는 정말로 내가 여기서 뭘 잘못하고 있는지 모른다. 입력 및 readline을 요청한 다음 생성자를 입력하지만 호출하지는 않습니다. 이걸 어떻게 부르 겠어?

public static int RomToNum(String rom) 
{ 
    StringBuilder temp = new StringBuilder(); 
    int ret = 0; 
    char[] letters = rom.ToArray(); 
    foreach (char item in letters) 
    { 
     if (item == 'M') 
      ret += 1000; 
     if (item == 'D') 
      ret += 500; 
     if (item == 'C') 
      ret += 100; 
     if (item == 'L') 
      ret += 50; 
     if (item == 'X') 
      ret += 10; 
    } 

    for (int x = 0; x < letters.Length; x++) 
    { 
     if (letters[x] == 'I' && !letters.Contains('V')) 
     { 
      ret += 1; 
     } 
     else 
     { 
      if (letters[x] == 'I' && x != letters.Length-1) 
      { 
       ret += 4; 
       break; 
      } 
      else if (letters[x] == 'I' && x == letters.Length-1) 
      { 
       ret += 6; 
       break; 
      } 
     } 
    } 
    return ret; 

} 
+1

업데이트 방법이 질문에 대한 답변을 원합니다. – Damith

+1

다른 클래스에서이 메서드를 호출하려고합니까? 또는 생성자에서? Pls 귀하의 질문을 명확히 –

+0

내 다른 클래스에서 그것을 부릅니다. – Zoro

답변

0

나는 Precious1tj가 게시 한 것보다는 생성자를 사용하여 메서드를 호출하려는 이유를 알지 못합니다. 당신이 메소드를 호출하는 생성자를 사용하려면하지만 당신은이 작업을 수행 할 수 있습니다

class Program 
    { 
     static void Main(string[] args) 
     { 
      Class2 c2 = new Class2("X"); //outputs '10' once it's instantiated 

      Console.ReadKey(); 
     } 
    } 

    class Class2 
    { 
     //overloaded ctor 
     public Class2(string rom) 
     { 
      Console.WriteLine(RomToNum(rom)); 
     } 
     public static int RomToNum(String rom) 
     { 
      StringBuilder temp = new StringBuilder(); 
      int ret = 0; 
      char[] letters = rom.ToArray(); 
      foreach (char item in letters) 
      { 
       if (item == 'M') 
        ret += 1000; 
       if (item == 'D') 
        ret += 500; 
       if (item == 'C') 
        ret += 100; 
       if (item == 'L') 
        ret += 50; 
       if (item == 'X') 
        ret += 10; 
      } 

      for (int x = 0; x < letters.Length; x++) 
      { 
       if (letters[x] == 'I' && !letters.Contains('V')) 
       { 
        ret += 1; 
       } 
       else 
       { 
        if (letters[x] == 'I' && x != letters.Length - 1) 
        { 
         ret += 4; 
         break; 
        } 
        else if (letters[x] == 'I' && x == letters.Length - 1) 
        { 
         ret += 6; 
         break; 
        } 
       } 
      } 
      return ret; 

     } 
    } 

생성자에서 메소드를 호출의 단점은 당신이 원하는 때마다 클래스의 새로운 객체를 생성해야한다는 것입니다 새로운 로마 숫자를 평가하는 것.

+0

나는 이것이 오퍼가 원하는 것을 +1한다. –

+1

나는 기본적으로 정말로 무지한 질문을한다. 왜냐하면 나는 5 주 동안 만 코딩했기 때문이다. 나는 어떤 이유로 입력을 요청했을 때 다른 메소드에 있어야한다고 가정하고 있었고, 다른 메소드를 호출하는 메소드에서 내 생성자가 필요하다고 가정했다. – Zoro

1

당신은 당신이 사용

다른 클래스에서 호출하고 있기 때문에

CurrentClass.RomToNum("String Values"); 
당신이 정적이기 때문에이 방법을 참조하기 위해 클래스에 대한 객체를 생성 할 필요가없는

method

+1

예,이 방법은 훨씬 간단합니다. – pcnThird

+0

예. 나도 그렇게 생각해. –

관련 문제