2013-12-18 2 views
-4

웹에서이 코드를 보았습니다. 코드가 숫자 순서를 뒤집어 쓰는 방법에 대해 머리를 감싸려고합니다. 누군가 나를 도울 수 있습니까? 또한 while 루프를 for 루프로 변경할 수있는 방법이 있습니까? 나는 코드가 약간을 날려 버리기 때문에 증가가 보이지 않는다.내 코드가 숫자를 뒤집는 이유를 이해하십시오.

import java.util.Scanner; 
class Challenge{ 

public static void main(String args[]){ 

///{write you code here 
int n, reverse = 0; 

     System.out.println("Enter the number to reverse"); 
     Scanner in = new Scanner(System.in); 
     n = in.nextInt(); 


     while(n != 0) 
     { 
      reverse = reverse * 10; 
      reverse = reverse + n%10; 
      n = n/10; 
     } 
///} 

    System.out.println("Reverse is :"+reverse); 
} 

} 
+2

디버거를 시작하고 순서대로 따라하면 나머지는 알게 될 것입니다! – Parth

+1

아니면, 만약 당신이 prefere면, 당신은 종이에 코드를 걸어 갈 수 있습니다;) –

+0

@DylanMeeus 좋은 옛날 참으로! –

답변

2

귀하의 전화 번호가 123이라고 말하십시오. 루프를 처음 실행할 때 reverse0부터 시작하므로이 줄은 아무 것도 수행하지 않습니다.

reverse = reverse * 10; 

그러나이 줄은 n의 마지막 자리를 사용합니다.

reverse = reverse + n%10; 

은 그래서 지금, reverse3입니다. 마지막 줄은, 그래서 지금 n12 어떤 나머지

n = n/10; 

을 폐기, (10)에 의해 n 나눕니다.

루프를 통해 두 번째 패스, 다음 상황이 발생

reverse = reverse * 10; 

reverse 지금 30이다.

reverse = reverse + n%10; 

reverse 지금 32입니다.

n = n/10; 

n 지금 1입니다. 루프를

마지막 시간 :

reverse = reverse * 10; 

reverse 지금 320입니다.

reverse = reverse + n%10; 

reverse은 이제 321입니다.

n = n/10; 

n 지금 0입니다.

+0

도움 주셔서 감사합니다. – user3113390

관련 문제