Допоможіть зрозуміти свою помилку. Результат перевірки такий, як і має бути судячи із запуску правильного рішення
package ua.javarush.task.task20.task2025;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
/*
Алгоритми-числа
*/
public class Solution {
private static long[] pows = new long[]{0,1,2,3,4,5,6,7,8,9};
private static int currentNumberOfDigits = 1;
private static void renewPows(){
for (int i = 1; i < 10; i++) {
pows[i] = (long) Math.pow(i, currentNumberOfDigits);
}
}
private static boolean isArmstrong(long number){
String numberString = String.valueOf(number);
int[] digits = new int[numberString.length()];
if (digits.length != currentNumberOfDigits) {
currentNumberOfDigits = digits.length;
renewPows();
}
long sum = 0;
for (int i = 0; i < digits.length ; i++) {
int digit = Character.getNumericValue(numberString.charAt(i));
sum += pows[digit];
}
if(sum == number) return true;
return false;
}
public static long[] getNumbers(long N) {
List<Long> res = new ArrayList<>();
for (long i = 1; i < N ; i++) {
if (isArmstrong(i)) {
res.add(i);
}
}
long[] result = new long[res.size()];
for (int i = 0; i < res.size(); i++) {
result[i] = res.get(i);
}
return result;
}
public static void main(String[] args) {
long a = System.currentTimeMillis();
System.out.println(Arrays.toString(getNumbers(1000)));
long b = System.currentTimeMillis();
System.out.println("memory " + (Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory()) / (8 * 1024));
System.out.println("time = " + (b - a) / 1000);
a = System.currentTimeMillis();
System.out.println(Arrays.toString(getNumbers(1000000)));
b = System.currentTimeMillis();
System.out.println("memory " + (Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory()) / (8 * 1024));
System.out.println("time = " + (b - a) / 1000);
}
}