이 코드를 살펴보겠습니다. su의 값이 18이었다면 su % 10의 결괏값은 8입니다. sum += su % 10; sum 변수의 값은 8이 됐습니다. 다음 줄의 su / 10의 결괏값은 1이 되겠죠? su는 1이 됐고, 다시 반복하면 su % 10의 결괏값이 1이 됩니다. sum 변수의 값이 9가 됐겠죠? 그리고 다음 줄을 수행하면 1/10은 0이므로 해당 반복문을 종료합니다. 이렇게 자릿수의 합을 구하고, 하샤드 수는 자릿수의 합으로 나누었을 때 나누어 떨어지는지 확인하면 됩니다.
if (num % sum == 0) isHarshad = true;
이 코드를 실행하면 나누어 떨어지면 하샤드 수이므로 isHarshad = true를 수행하면 됩니다.
이 문제의 핵심은 자릿수의 합을 어떻게 구하느냐입니다. 지금 설명처럼 구할 수도 있고, 다른 방법을 이용할 수도 있습니다.
예를 들면 자바가 제공하는 Integer라는 클래스가 있습니다. 이 클래스가 갖고 있는 toString 메서드를 이용하면 int 값을 String 값으로 바꿔줍니다.
String str = Integer.toString(num);