2014-02-11 8 views
0

안녕하세요 저는 현재 교과서 작업을하고 있습니다. 그래서이 코드를 작성했습니다. 그러나 x number is < 0 일 때 번호를 반환하지 못하게하려면 어떻게해야합니까?Java의 팩토리얼 클래스

public class Factorial { 

    public Factorial() { 
     System.out.print(new C1().computeFac(10)); 
    }  

    /** First addicional class **/ 
    private class C1 { 

     /** Fields **/ 
     private int a,result = 1; 

     /** Method **/ 
     public int computeFac(int input) { 

      if (input < 0) { 
       System.out.print(new C2().printError(0)); 
      } else { 

       for (a = 1 ; a <= input ; a++) 

        result = result*a; 
       return (result); 
      } 
      return (result);    
     } 
    } 

    /** Second Addicional class **/ 
    private class C2 { 

     /** Fields **/ 
     String errosArray[] = {"Negative numbers are not aceptable! \nPlease try again!\n"}; 

     public String printError(int a) { 
      return errosArray[a]; 
     } 

    } 

    /** Main Method **/ 
    public static void main(String [ ] args) { 
     Factorial factorial = new Factorial(); 
    } 

} 
+0

숫자를 반환하는 것을 막을 수 없으며 메서드는 int를 반환합니다. –

+0

그래, 그게 내가 요새 야. 그것은 무효가되어야합니다. 절대로 그렇게 생각하지 않을 것입니다. –

답변

3

정상적인 접근 방식은이 시점에서 예외를 throw하는 것입니다. 항상 그들은 단지 한 줄 경우에도, 루프와 조건문에 대한 중괄호를 사용하는 것이 좋습니다 것을,

또한
 public int computeFac(int input) { 
      if (input < 0) { 
       throw new IllegalArgumentException("Negative numbers are not allowed"); 
      } 
      for (a = 1 ; a <= input ; a++) { 
       result = result*a; 
      } 
      return result; 
     } 

, 참고 : 그래서 당신의 코드는 같을 것이다.

+0

유용한 정보를 제공해 주셔서 감사합니다. 'new C2(). printError (0)); ' –

+0

중괄호에 대한 upvote! – alepuzio