2014-06-10 7 views
1

내가 예상 출력을받지 못했습니다 .... 내 이름은 샘 내가 java.I에서 초보자가 실제로 내 자신이 "계승"프로그램을 시도하고 논리를 잘못가는 뭐죠 내가 볼 수 있어요 아무도 왜 저에게 말할 수 있습니까? 미리 감사드립니다, 모든 사용자에게 GRT 일 :"Factorial"프로그램에 예상되는 출력을 얻을 수 없습니까?

계승 :

import java.util.*; 

class factorial { 

    public static void main(String[] args) { 

     int i; 

     System.out.println("enter a number"); 

     Scanner in=new Scanner(System.in); 

     int n=in.nextInt(); 

     int x=n; 

     while(x!=0) { 
      x=x*(n-1); 
      n--; 
     } 

     System.out.println(x); 

    } 

} 

내가 5, 나는 5 (120)의 factoial을 얻을 것으로 예상 (예)를 입력합니다. 대신, 나는 0이됩니다. 이것은 모든 입력에 대해 발생합니다.

+1

곱되고 –

+0

힌트 : 당신의'while'를 살펴 보자. 또한 정수 오버 플로우에주의하십시오. – awksp

+0

동안 (X! = 0) 항상 당신의 코드가 제대로 들여 쓰기하지 제로 –

답변

-2

이 코드를 사용해보십시오 : 0 N = 1

public static void main(String[] args) 

{ 

    int i; 

    System.out.println("enter a number"); 

    Scanner in=new Scanner(System.in); 

    int n=in.nextInt(); 

    int x=1; 

    while(n!=0) 

    { 

     x*=(n); 
     n--; 

    } 

    System.out.println(x); 

} 

귀하의 while 루프는 답변을 곱된다, 그리고 우리 모두가하는 영에 의해 어떤 곱셈 알고있다.

편집 : 나의 나쁜, 편집 코드입니다.

+1

솔루션을 사용해 보셨습니까? 왜냐하면 틀렸어. – awksp

6

당신이 정말로 배우고 싶은 경우에, 같은과 같은 당신의 머리에 코드 라인으로 라인, 실행을 시작 : 따라서 종이로

int n = 5; 

int x = n; 
while (x != 0) { 
    x = x * (n - 1); 
    n--; 
} 

시작 :

x | n 
-----+----- 
    | 
    | 
    | 
    | 

하고, 각 행을 "실행"할 때 새 값을 적어 두십시오. 그렇게하면 문제가있는 곳에서 즉시 분명해질 것입니다. 또한 더 나은 개발자가 될 것입니다.

Please do 이 작업을 완료하고 수정하려고 할 때까지이 답변의 나머지 부분을 살펴보십시오. 문제를 이해하고 (희망)을 고정, 아래의 솔루션을 가지고있는 비교하면


:

int n = 5;   // input value. 

int x = 1;   // initial accumulator set to identity (n * 1 = n). 
while (n != 0) { // use all values from n down to 1 (inclusive). 
    x = x * n;  // multiply accumulator by that value. 
    n--;   // get next value. 
} 
0

INT X = N; 루프는, 지금까지 X = 0 일 X n이 0이되면, n은 시도 루프 0의 값을 얻을 수 있기 때문에

while(x!=0) { 
     x=x*(n-1); 
     n--; 
    } 

결과는 0이됩니다! 루프 조건 한동안 = 0

0

While 루프 조건을 while (n! = 1)으로 변경하기 만하면됩니다. n이 1이되면 x = x * (n-1)이되기 때문에; X가 발생합니다 안녕하세요 우리는 새로운 가까운 이유를 사용해 얻을 수 : 0