2014-02-09 176 views
2

我創建了字節數組,但不知道這是否是將數字串放入它的方式。我是這個字節數組的新手,並且很難知道我是否做得對。將字符串放入字節數組

public class AdditionOnlyInt implements BigInt 
{ 
    private byte[] data; 

    public AdditionOnlyInt(String number) 
    { 
     data = new byte[number.length()]; 
     number.replace("0",""); 

     int i = 0; 
     int counter = number.length(); 

     while(i<number.length()) 
     { 
      data[i] = (byte) number.charAt(counter); 
      i++; 
     } 

    } 
} 

我必須擺脫前導零的然後把從至少顯著最顯著數量的數組中的是計數器變量的原因

+0

呃......你爲什麼要「把一串數字放進一個字節數組」?這是否正確是在瞭解它是否實際上是你想要做或不... – keshlam

+0

我的錯讀了錯誤的東西我知道什麼是不對的 – user3288719

+0

我懷疑你做了你想要的,因爲字符''0 ''通過轉換轉換爲'byte'應該導致48(請參閱[asciitable](http://www.asciitable.com/)) – zapl

回答

0

試試這個..

public class AdditionOnlyInt implements BigInt 
    { 
    private byte[] data; 



    public AdditionOnlyInt(String number) 
     { 
     data = new byte[number.length()]; 
     String num=number.replace("0",""); 
     int i = 0; 
     int counter = number.length()-1; 
     while(counter>=0) 
      { 
       data[i++] = Byte.parseByte(String.valueOf(num.charAt(counter--))); 
      } 

     } 
    } 
+0

length() - 1被使用,因爲數組的索引從0開始。 num.charAt(counter--)返回一個char值,並且char值由String.valuOf()方法轉換爲字符串。 –

0

嗯,這是一個錯誤:

number.replace("0",""); 

首先,它沒有做任何事情:字符串是不變的,所以所有的字符串方法返回一個新的字符串,所以你必須分配返回值:

number = number.replace("0",""); 

其次,這與刪除所有零 - 領先或以其他方式。不是你想要的。要刪除領先零,這樣做:

number = number.replaceAll("^0+",""); 

它使用正則表達式,只是針對前導零。

最後,如果你想表示一個號碼的數字,使用int[]並獲得一個字符,減去的整數值「0」:

int[] data; 

data[i] = number.charAt(counter) - '0'; // '0' --> 0, '1' --> 1, '2' --> 2 etc 

使這些變化,看看你靠近點。

相關問題