2015-06-25 38 views
0

我是android開發中的新手,我有一個簡單的問題。在java中劃分每一個長數的數字

想象我有一個長長的數字,比如166516516516516515.

,我想有劃分輸出,如: 1,6,6,5,1,6,5,1,6,5,1 ,6,5,1,6,5,...

我的意思是我想每一個輸出。

我寫這個算法:

int temp = 2536; 
ArrayList<Integer> array = new ArrayList<Integer>(); 
do { 
    array.add(temp % 10); 
    temp /= 10; 
} 
while (temp > 0); 
for (int i = 0; i < array.size(); i++) { 
    Log.i("LOG", "Dynamic Numbers Array Index #" + i + " = " + array.get(i)); 
} 

它適用於小數字(INT)

但隆多不會給真正的工作,

我怎麼能解決它要與大數字一起工作?

謝謝。

+0

也當有後對方兩個零,你得到了什麼錯誤? –

+0

@RamanShrivastava對不起,沒關係,只是我不能用長號碼來做。 (編輯後) – Moss

+0

好的。 「長」數字會產生什麼結果?理想情況下,如果你的長號碼在java的長期支持範圍內,它應該可以工作。 –

回答

5

剛纔讀的東西轉換成字符串,並做:

for(char c : str.toCharArray()){} 

無需去除任何你可以有任意長度。

如果需要整數只是做轉換:

int i = (int)(c - '0'); 
2

首先,你需要提防如果可以「臨時抱佛腳」所有你的電話號碼爲簡單的int類型。如果時間太長,你可能根本無法做到這一點 - 正如你現在可能注意到的那樣。

我採取了另一種解決方案,但它可能並不完全符合您的需求。將數字視爲字符串。

String temp = "166516516516516515"; 
breakUp(temp); 

private static void breakUp(String string){ 
     int length = string.length(); 

     for (int i = 0; i < length; i++) { 
      String temp = string.substring(i, i+1); 
      int tempInt = Integer.valueOf(temp); 
      System.out.print(tempInt + " - "); //or whatever here, you can make function return list instead of void 
     } 
    } 
1
import java.io.IOException; 
import java.math.BigInteger; 
import java.util.ArrayList; 
import java.util.List; 

public class Callone { 


    public static void main(String[] args) 
    { 
     BigInteger i = new BigInteger("166516516516516515"); 
     List<Integer> list = new ArrayList<Integer>(); 
     BigInteger ten = new BigInteger("10"); 
     while (!i.equals(BigInteger.ZERO)) 
     { 
      list.add(0, i.mod(ten).intValue()); 
      i = i.divide(ten); 
     } 

     System.out.println(list.toString()); 


    } 
} 

輸出:[1,6,6,5,1,6,5,1,6,5,1,6,5,1,6,5,1,5]

+0

有'java.math.BigInteger.TEN'和'BigInteger [] \t divideAndRemainder(BigInteger除數)''。 – greybeard

0

分裂longString到intArray

斯普利特longString到字符數組,然後使用Character.digit將獲得數字值。

public static int[] splitLong(String longStr) { 

    int i = 0; 
    int[] nums = new int[longStr.length()];  

    for (char l : longStr.toCharArray()) 
     nums[i++] = Character.digit(l, 10);  

    return nums; 
} 

其他方法:

public static int[] splitLongNum(String longStr) { 

    int len = longStr.length(); 
    int[] nums = new int[len]; 
    for (int j = 0; j < len; j++) 
     nums[j] = Character.digit(longStr.charAt(j), 10); 
    return nums; 
} 
相關問題