【发布时间】:2019-04-15 13:40:24
【问题描述】:
因此,我最近尝试进行 HackerRank 挑战,该挑战涉及计算一个数字的孔并将它们相加,经过一番研究,我最终将其制成一个 char 数组并选择三个值来递增并相加为总和如下图:
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。
我是个新手,但这该死的令人沮丧。我觉得这是一个我没见过或不知道的微观细节,而不是我的逻辑。有什么帮助吗?
【问题讨论】:
-
您希望输出是什么? (打印
Array时也使用Arrays.toString)
标签: java arrays char type-conversion nested-loops