![]() |
PCDVD數位科技討論區
(https://www.pcdvd.com.tw/index.php)
- 七嘴八舌異言堂
(https://www.pcdvd.com.tw/forumdisplay.php?f=12)
- - 請問javascript轉JAVA這樣改寫 對嗎?
(https://www.pcdvd.com.tw/showthread.php?t=1052035)
|
---|
請問javascript轉JAVA這樣改寫 對嗎?
請問這個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; } 是這樣寫嗎? 謝謝 |
引用:
看起來沒錯 不過算是多嘴 ... 你執行看看不就知道了? |
引用:
我改成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 不是很懂哪邊錯了 謝謝 |
引用:
JAVA 我不熟,但直覺就是資料型別或許要注意一下兩種語言的規範 還有 Java 有 parseInt 這個方法嗎?有的話你也可能要注意一下用法,或許不一樣,Javascript 雖然也有 Java 二字,但兩者可能不一樣 |
引用:
基本上大部分的錯誤, 看Exception的訊息就知道哪裡錯 以下為人腦debug, 如果出錯請勿見怪 當 input.length() >= 6,且 length >= 3 時, i的範圍可能會大於2 當i >= 2時, input.substring((i*4),4) 就會爆掉 |
編譯能過那就是邏輯或資料有問題
猜測如下: 1.從函數名稱看起來是要把16進位的字串轉成陣列 那麼Integer.parseInt(String args)是當10進位在解析 如果資料有A~F鐵定Exception 2.length從外部傳入,如果length<(input.length/2) 則回傳的陣列內容就有問題,這種寫法並不適當吧? 3.就算是檢查資料正確性,但都已經解成int了,為何要浪費效能再轉回String? PS.絕大部份Exception都把原因寫的很清楚,就算看不懂也貼出來 不然人腦模擬執行不一定會和你遇到的錯誤一樣!!! |
把 output 設成 static,不要 return。
很多年沒碰 java~ 我忘了可不可以這樣,不過你的程式有一個明顯的問題:return local variable... 我是用 C 的觀點來看的。 |
引用:
+1 直接把input和exception貼出來吧。 |
input.substring((i*4),4)
這裡怪怪的, 理解沒錯的話, String substring(int beginIndex, int endIndex), i = 0, 0 ~ 4, i = 1, 4 ~ 4, i = 2, 8 ~ 4 .....?! |
StringIndexOutOfBoundsException
如果是這個的話.. |
所有的時間均為GMT +8。 現在的時間是04:59 AM. |
vBulletin Version 3.0.1
powered_by_vbulletin 2025。