[英]split int value into separate digits
我想將我的int值拆分成數字。 例如,如果沒有。 是542,結果應該是5,4,2。
我有2個選擇。 1)將int轉換為String然后使用getCharArray(),我可以有單獨的字符然后我將它們轉換回int值。
2)將int轉換為String,而不將其轉換為char數組,迭代它並獲取所有數字。
有沒有其他方法可以解決這個問題。 如果沒有,哪個選項會快?
List<Integer> digits(int i) {
List<Integer> digits = new ArrayList<Integer>();
while(i > 0) {
digits.add(i % 10);
i /= 10;
}
return digits;
}
使用mod 10規則......
List<Integer> digits = new ArrayList<Integer>();
while (n > 0) {
digits.add(n%10);
n/=10;
}
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
sum += z;
。
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”分割成單個數字。 它從最后一個數字開始直到第一個數字。
class 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
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.