簡體   English   中英

將int值拆分為單獨的數字

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

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