簡體   English   中英

匯總數字在Java中的數字

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM