2017-09-27 3 views
2

지침 : 사용자가 N을 입력하고 N! (N * (N-1) (N-2) ... * 2 * 1을 의미 함). 힌트 : 변수 totalValue를 N으로 초기화하고, N-1에서 1까지 카운트하는 루프 변수 i를 사용하십시오.5! 120이지만 출력은 1입니다! 120입니까?

Java 계승, 5에 대한 나의 이해에서! = 5 * 4 * 3 * 2 * 1 = 120. 이 실습에서 Java 팩토리얼을 계산할 때 사용자 입력으로 5를 입력하여 Java 팩토리얼을 올바르게 계산할 수 있는지 테스트했습니다. 그러나 출력은 1로 나온다! // FIXME 주석에 대한 이해에서

userInt = scnr.nextInt(); 
// FIXME: Ask user to input an integer, store in userInt 

totalVal = userInt; 

while (userInt > 1) { 
    userInt = userInt - 1; 
    totalVal = userInt * totalVal; 

} // FIXME: Add while loop that counts down to 1, updating totalVal 
System.out.println(userInt + "! is " + totalVal); 
} //After typing 5 and clicking Run, it shows 1! is 120 

: 그냥 엿볼, 여기에 (120) 내 코드의 일부입니다 userInt에 입력에 가게를 정수를 사용자에게 물어 // 난 '에 입력 5 '를 계승을 계산하기위한 테스트로 사용합니다. 따라서 사용자 입력으로 5를 입력 할 때 왜 5가 나오지 않았습니까? 120입니까? 왜 안 그래? 120입니까?

내 코드에서 왜 1인지 설명 할 수 있습니까? 5가 아니라 120입니다! 120입니까? 또는 왜 그것이 5이어야하는지! 내가 120 일 것으로 추측하고 있었기 때문에 120 점입니까? 미리 감사드립니다. 저는이 문제를두고 머리를 감싸려고 노력하고 있습니다.

+4

'userInt'가 1에 도달 할 때까지 감소하기 때문에 당신에게 혼란스러운 점은 무엇입니까? – shmosel

+0

감소 할 때, 내가 틀렸다면 나에게 맞춰주세요, 즉 i = i -1? 그래서 그것은 내 코드에서 1이라고 말할 수 있습니다! userInt = userInt - 1 때문에 120입니까? 왜 그것이 1 인 지 이제는 의미가 있습니다! 나는 5라고 생각했기 때문에 처음에는 혼란 스러웠습니다! = 5 * 4 * 3 * 2 * 1 = 120이고 출력이 5로 표시되어야한다고 가정했습니다! 120 – acruz30

+0

맞습니다. – shmosel

답변

0

은 while 루프 후 userInt 1

userInt userInt되었다 = - 1; < = 1이 될 때까지 반복됩니다.

다른 변수에 backup userInt.

0

while 루프에서 userInt 변수를 변경하려고하므로 인쇄 할 때 항상 1을 인쇄합니다.

while 루프 앞에 user int를 다른 변수에 저장하고 대신 인쇄하십시오.

3

1에 도달 할 때까지 userInt이 감소합니다. 홀더 정수 변수를 추가하여 사용하여이 문제를 해결할 수 있습니다.

userInt = scnr.nextInt(); 

int holder = userInt; 

totalVal = userInt; 

while (userInt > 1) { 
userInt = userInt - 1; 
totalVal = userInt * totalVal; 

} // FIXME: Add while loop that counts down to 1, updating totalVal 
System.out.println(holder + "! is " + totalVal); 
} //After typing 5 and clicking Run, it shows 1! is 120