2013-04-10 36 views
0

我有不同的char []數組與不同量的項目的情況的Android:填充陣列達到一定長度

。爲了在處理它們時避免「OutOfBounds」--Error,我想對它們進行標準化。 例如:

我的數組有以下幾項:「5; 9」 - >我想讓它看起來像:「0,0,0,0,5,9」(填滿「0」 s到6項)

我試了一下:

char[] myarray1 = mystring1.toCharArray(); 
... 
for(int i=0; i<6; i++){ 
     myarray1[i] = 0; 
     if(i<myarray1.length-1){ 
      myarray1[i] = myarray1[i]; 
     }else{ 
      myarray1[i] = 0; 
     }; 
    }; 

我的代碼失敗了,因爲它喚起正是錯誤...

我希望有人能幫助我:) 謝謝!

+0

你只使用數字嗎?如果是這樣,你爲什麼使用String?你是否將字符串作爲輸入,並且你只需要匹配格式以產生六個字符的輸出? – sngreco 2013-04-10 16:52:39

回答

2

您的解決方案無法正常工作的原因是您對所有內容都使用相同的數組。 char[] myarray1 = mystring1.toCharArray();之後myarray1的長度是2,所以你不能簡單地在你的循環中分配條目2,3,4和5。此外,如果你希望字符'0'在字符串中,你需要用撇號包圍你的零。

您可以修復您的解決方案是這樣的:

char[] myNewArray = new char[6]; 
int myarrayIndex = 0; 
for(int i=0; i<6; i++) 
{ 
    if(i < (myNewArray.length - myarray1.length)) { 
     myNewArray[i] = '0'; 
    } else { 
     myNewArray[i] = myarray1[myarrayIndex++]; 
    }; 
}; 

System.out.println(myNewArray); //Will print out: 000059 

更簡單的解決辦法是這樣的:

myarray1 = String.format("%6s", mystring1).replace(' ', '0').toCharArray(); 
+0

謝謝!第二個解決方案效果很好,太簡單了:)我沒有想到String.format ...無論如何,謝謝! – Jonas 2013-04-10 18:40:02

0

首先嚐試填充0's不會解決錯誤。 其次,您的邏輯不正確(假定尺寸爲6),將其更改爲myString.length()。 而我不明白myarray1[i] = myarray1[i];的觀點。

無論如何,每個有整數大小的數組都被零初始化,根據Java specs。另一方面,如果您想用其他值填充它,請嘗試Arrays.fill()

0

我覺得這個功能將完成你想要做什麼。

private static String formatString(String input) 
{ 
    String FORMATTED_STRING = "0,0,0,0,0,0"; 
    int difference = FORMATTED_STRING.length() - input.length(); 
    return FORMATTED_STRING.substring(0, difference) + input; 
}