1

我有一堆数字。这些数字的每个数字都连接 n 次,然后求和。我必须编写函数,如果总和等于数字则返回 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开头。

4

4 回答 4

1

当你初始化一个新的对象数组(String[] strs = ...)时,数组中的所有元素都将被初始化为null,但你可以遍历数组并将它们全部设置为某个值(如“”)

于 2012-06-21T13:35:19.210 回答
1

当您创建一个数组(String在这种情况下)时,它的元素null首先是。

您需要初始化元素:

String[] digit = new String[charArray.length];
for (int i = 0; i < digit.length) {
  digit[i] = new String();
}
于 2012-06-21T13:36:17.390 回答
1
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];
}

其他答案是正确的,但只是对现有循环的快速添加,无需创建新循环即可实现它。

于 2012-06-21T13:40:01.837 回答
0

另一种方法是测试 array[?] 是否为“null”,避免为垃圾收集器创建临时对象字符串

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 次尝试);

于 2012-06-21T14:11:33.270 回答