[英]sum digits a number in Java
我有一堆数字。这些数字的每个数字连接n次,然后求和。 我必须写函数,如果sum等于数,则返回1,否则返回0。
public static int checkConcatenatedSum(int n, int catlen) {
char[] charArray = String.valueOf(n).toCharArray();
int[] test = new int[charArray.length];
String[] digit = new String[charArray.length];
int sum = 0;
for (int j = 0; j < charArray.length; j++){
for(int i = 0; i < catlen; i++){
digit[j] += charArray[j];
}
test[j] = Integer.parseInt(digit[j]);
sum += test[j];
}
if(sum == n){
return 1;
}
else return 1;
}
digit[j]
每次都以null开头。
for (int j = 0; j < charArray.length; j++){
digit[j] = new String();
for(int i = 0; i < catlen; i++){
digit[j] += charArray[j];
}
test[j] = Integer.parseInt(digit[j]);
sum += test[j];
}
其他答案是正确的,但只是快速添加现有的循环,实现它而不需要新的循环。
初始化一个新的对象数组(String [] strs = ...)时,数组中的所有元素都将初始化为null,但您可以迭代数组并将它们全部设置为某个值(如“”)
创建数组(在本例中为String
)时,其元素最初为null
。
您需要初始化元素:
String[] digit = new String[charArray.length];
for (int i = 0; i < digit.length) {
digit[i] = new String();
}
另一种方法是测试数组[?]是否为'null',以避免为垃圾收集器创建临时对象String
for (int j = 0; j < charArray.length; j++){
for(int i = 0; i < catlen; i++){
digit[i] = digit[i] == null ? charArray[j] : digit[i] + charArray[j];
}
test[j] = Integer.parseInt(digit[j]);
sum += test[j];
}
编辑你的第二次回归是错误的(0次尝试);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.