콘솔 창에 10이상 100000이하의 자연수 N을 입력하여 해당 숫자까지 존재하는 암스트롱 수를 구하려고 합니다.
암스트롱 수는 해당 숫자와 각 자리수의 세제곱들의 합이 같은 숫자를 뜻한다고 하네요.
이래저래 코드가 중구난방이 된거 같긴 한데 그래도 숙련자 분들 께선 봐주시리라 믿고 질문을 올립니다 ㅠ
import java.util.*;
public class 암스트롱수 {
public static int multiple(String[] Numarr){
int[] arr = new int[Numarr.length];
int result=0;
for(int i=0;i<Numarr.length;i++){
arr[i]=(int)Math.pow(Double.parseDouble(Numarr[i]), 3);
}
for(int i=0;i<arr.length;i++){
result += arr[i];
}
return result;
}
public static void main(String[] args) {
// TODO 자동 생성된 메소드 스텁
String Num;
String Numtmp;
String[] NumArr;
int count;
Scanner sc = new Scanner(System.in);
System.out.println("양의 정수 N을 입력하세요(10이상 100000이하)");
do{
Num=sc.nextLine();
}while(!(Integer.parseInt(Num)>=10 || Integer.parseInt(Num)<=100000));
for(int i=10;i<Integer.parseInt(Num);i++){
Integer j = new Integer(i);
Numtmp=j.toString();
NumArr = new String[Numtmp.length()];
for(int h=0;h<Numtmp.length();h++){
NumArr[h]=Numtmp.substring(h, h+1);
}
count=multiple(NumArr);
if(i==count){
System.out.println(i);
}
NumArr=null;
Numtmp=null;
j=null;
}
sc.close();
}
}
이렇게 코드를 짰는데요.
문제는 153 부터 407 까지는 출력이 되는데 그 이상의 범위에 있는 수가 출력이 되질 않습니다.
찾아보니 다음 암스트롱수는 4자리 숫자더군요.
정올에서 본 문제라 예시를 찾기도 힘드네요....
뭐가 문제일까요??