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