![]() |
||
*停權中*
加入日期: Dec 2010
文章: 341
|
![]() 請問這個javascript
代碼:
function hexstr2array(input, length) { var output = new Array(length); var i=0; for (i=0; i<length; i++) { if (i < input.length/2) { output[i] = parseInt(input.substr(i*4,4),16); } else { output[i] = 0; } } return output; } 轉成JAVA 代碼:
public static String[] hexstr2array(String input,int length) { String[] output = new String[length]; for (int i=0; i<length; i++) { if (i < (input.length())/2) { int ss = Integer.parseInt(input.substring((i*4),4)); output[i] =""+ss; } else { output[i] = "0"; } } return output; } 是這樣寫嗎? 謝謝 |
|||||||
![]() |
![]() |
*停權中*
加入日期: Jul 2013
文章: 331
|
引用:
看起來沒錯 不過算是多嘴 ... 你執行看看不就知道了? 此文章於 2014-06-17 07:42 PM 被 micall.lee 編輯. |
|||
![]() |
![]() |
*停權中*
加入日期: Dec 2010
文章: 341
|
引用:
我改成java 執行到 代碼:
for (int i=0; i<length; i++) { if (i < (input.length())/2) { int ss = Integer.parseInt(input.substring((i*4),4)); output[i] =""+ss; 直接 Exception 不是很懂哪邊錯了 謝謝 |
|
![]() |
![]() |
*停權中*
加入日期: Jul 2013
文章: 331
|
引用:
JAVA 我不熟,但直覺就是資料型別或許要注意一下兩種語言的規範 還有 Java 有 parseInt 這個方法嗎?有的話你也可能要注意一下用法,或許不一樣,Javascript 雖然也有 Java 二字,但兩者可能不一樣 |
|
![]() |
![]() |
New Member
加入日期: Oct 2006
文章: 8
|
引用:
基本上大部分的錯誤, 看Exception的訊息就知道哪裡錯 以下為人腦debug, 如果出錯請勿見怪 當 input.length() >= 6,且 length >= 3 時, i的範圍可能會大於2 當i >= 2時, input.substring((i*4),4) 就會爆掉 |
|
![]() |
![]() |
Amateur Member
![]() 加入日期: Jun 2002 您的住址: 太陽系
文章: 32
|
編譯能過那就是邏輯或資料有問題
猜測如下: 1.從函數名稱看起來是要把16進位的字串轉成陣列 那麼Integer.parseInt(String args)是當10進位在解析 如果資料有A~F鐵定Exception 2.length從外部傳入,如果length<(input.length/2) 則回傳的陣列內容就有問題,這種寫法並不適當吧? 3.就算是檢查資料正確性,但都已經解成int了,為何要浪費效能再轉回String? PS.絕大部份Exception都把原因寫的很清楚,就算看不懂也貼出來 不然人腦模擬執行不一定會和你遇到的錯誤一樣!!! 此文章於 2014-06-17 08:50 PM 被 傳說 編輯. |
![]() |
![]() |
Major Member
![]() 加入日期: Aug 2001
文章: 211
|
把 output 設成 static,不要 return。
很多年沒碰 java~ 我忘了可不可以這樣,不過你的程式有一個明顯的問題:return local variable... 我是用 C 的觀點來看的。
__________________
滿招損 謙受益 此文章於 2014-06-18 03:52 AM 被 darkangel 編輯. |
![]() |
![]() |
Silent Member
加入日期: Aug 2013
文章: 0
|
引用:
+1 直接把input和exception貼出來吧。 |
|
![]() |
![]() |
Major Member
![]() 加入日期: Dec 2012
文章: 182
|
input.substring((i*4),4)
這裡怪怪的, 理解沒錯的話, String substring(int beginIndex, int endIndex), i = 0, 0 ~ 4, i = 1, 4 ~ 4, i = 2, 8 ~ 4 .....?! |
![]() |
![]() |
Major Member
![]() 加入日期: Dec 2012
文章: 182
|
StringIndexOutOfBoundsException
如果是這個的話.. |
![]() |
![]() |