Поэтому я недавно попытался выполнить задачу HackerRank, которая включала подсчет дыр числа и их сложение, и после небольшого исследования я в итоге превратил его в массив символов и выбрал три значения для увеличения и суммирования ссумма, как показано ниже:
public static int countHoles(int num) {
//create integers that count how many a number with no, one or two holes shows up
Integer noHoles = 0;
Integer oneHole = 0;
Integer twoHoles = 0;
Integer sum = 0;
Integer length = 0;
//turn the inputted number into a char array
char [] digits = String.valueOf(num).toCharArray();
System.out.println(digits);
length = digits.length;
//These nested loops incremement the numbers initialized above as the first for-each loop goes through each index value of the array
for (int i = 0; i < digits.length; i++){
if (digits[i]== 1 || digits[i]==2 || digits[i]==3 || digits[i]==5 || digits[i]==7){
noHoles++;
} else if (digits[i]==4 || digits[i]==6 || digits[i]==9 || digits[i]==0){
oneHole+= 1;
} else if (digits[i]==8){
twoHoles+= 2;
}
}
//add up the incremented integers. twoHoles is doubled as each unit counts as two holes and noHoles is 0 regardless of its values
sum = oneHole + twoHoles;
return sum;
}
}
, но массив char всегда возвращается как обычное целое число!Я не могу попробовать модульный подход, так как используется 0 (имеет одно отверстие), и куча вариантов для String.valueOf (num) .toCharArray (), таких как ("" + num) .toCharArray () и Integer.toString (number) .toCharArray (), но он по-прежнему выводит введенное число вместо требуемого массива char.Конечно, остальная часть метода выдает 0 из-за пустого массива.
Я немного новичок, но, черт возьми, это расстраивает.Я чувствую, что это микро детали, которые я не видел или не знаю вместо своей логики.Любая помощь, пожалуйста?