我想我的int值分成數字。例如,如果沒有。是542,結果應該是5,4,2。分裂int值成獨立的數字
我有2種選擇。 1)轉換成INT字符串&然後通過使用getCharArray()中,i可以具有單獨的字符&然後我將它們轉換回INT值。
2)轉換成INT字符串,而不將其轉換成字符數組,迭代它&得到所有數字。
是否有任何其他的方式來解決這個問題。如果不是,哪個選項會很快?
我想我的int值分成數字。例如,如果沒有。是542,結果應該是5,4,2。分裂int值成獨立的數字
我有2種選擇。 1)轉換成INT字符串&然後通過使用getCharArray()中,i可以具有單獨的字符&然後我將它們轉換回INT值。
2)轉換成INT字符串,而不將其轉換成字符數組,迭代它&得到所有數字。
是否有任何其他的方式來解決這個問題。如果不是,哪個選項會很快?
List<Integer> digits(int i) {
List<Integer> digits = new ArrayList<Integer>();
while(i > 0) {
digits.add(i % 10);
i /= 10;
}
return digits;
}
除以十得到剩餘物,把他們在您選擇的集合/數組,繼續這樣做,直到商爲零,你已經是一個餘
int num = 542;
if (num<0) num=-num; // maybe you'd like to support negatives
List<Integer> digits = new LinkedList<Integer>();
while (num>0) {
digits.add(0, num%10);
num=num/10;
}
System.out.println(Arrays.toString(digits.toArray())); // [5, 4, 2]
你可以使用一個堆棧,而不是一個ArrayList,如果排序是一個大問題。當從堆疊中彈出數字時,您將按照正確的順序得到它們,首先是最重要的數字。
int digits(int i) {
int num=0;
while(i > 0) {
num *= 10;
num += i % 10;
i /= 10;
}
return num;
}
這會爲您分割數字。現在把它們放到一個數組中,而不是將它們打印出來,然後用數字做任何你想要的。如果你想添加它們,你可以用sum += z;
來代替System.out
。
public class Splitter {
public static int numLength(int n) {
int length;
for (length = 1; n % Math.pow(10, length) != n; length++) {}
return length;
}
public static void splitNums(double x){
double y, z, t = x;
for (int p = numLength((int)x)-1; p >= 1; p--){
y = t % Math.pow(10, (numLength((int)(t))-1));
z = ((t - y)/Math.pow(10, p));
t = t - (z * Math.pow(10, p));
System.out.println(Math.abs((int)(z)));
}
System.out.println(Math.abs((int)(t)));
}
}
該算法將原始「int」分成單個數字。它從最後一位數字開始,直到第一位。
類IntegerSplitterDemo {
static boolean digitChoper(int num) {
for(int i = 10; i <= Integer.MAX_VALUE; i *= 10 ) {
//Starts from the last digit so it will display the int in reverse order
int remainder = (i == 10) ? num % 10 : (num % i/(i /10));
//You can store the remainder value into ArrayList
System.out.print(remainder + " ");
//stop iterating the loop
if(num % i == num) { break; }
}
System.out.println("");
return true;
}
public static void main(String[] args) {
int[] num = {0, 371, 372, 678, 432, 569, 341, 371, 567, 2569874};
for(int number : num) {
digitChoper(number);
}
} // end main
}
如果i = 0,則失敗。 – 2011-03-04 16:51:29
該列表將向後。 – 2011-03-04 17:18:10
@Steve夠公平 - 負數也失敗。特殊情況作爲練習留給讀者。 – corsiKa 2011-03-04 17:44:59