PCDVD數位科技討論區
PCDVD數位科技討論區   註冊 常見問題 標記討論區為已讀

回到   PCDVD數位科技討論區 > 其他群組 > 七嘴八舌異言堂
帳戶
密碼
 

  回應
 
主題工具
公不
*停權中*
 

加入日期: Dec 2010
文章: 341
Question 請問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;
    }


是這樣寫嗎?

謝謝
     
      
舊 2014-06-17, 07:30 PM #1
回應時引用此文章
公不離線中  
micall.lee
*停權中*
 
micall.lee的大頭照
 

加入日期: Jul 2013
文章: 331
引用:
作者公不
請問這個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;
}

是這樣寫嗎?

謝謝

看起來沒錯

不過算是多嘴 ... 你執行看看不就知道了?
 

此文章於 2014-06-17 07:42 PM 被 micall.lee 編輯.
舊 2014-06-17, 07:38 PM #2
回應時引用此文章
micall.lee離線中  
公不
*停權中*
 

加入日期: Dec 2010
文章: 341
引用:
作者micall.lee
看起來沒錯

不過算是多嘴 ... 你執行看看不就知道了?

我改成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

不是很懂哪邊錯了

謝謝
舊 2014-06-17, 07:54 PM #3
回應時引用此文章
公不離線中  
micall.lee
*停權中*
 
micall.lee的大頭照
 

加入日期: Jul 2013
文章: 331
引用:
作者公不
我改成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 二字,但兩者可能不一樣
舊 2014-06-17, 08:00 PM #4
回應時引用此文章
micall.lee離線中  
smallwall
New Member
 

加入日期: Oct 2006
文章: 8
引用:
作者公不
我改成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

不是很懂哪邊錯了

謝謝



基本上大部分的錯誤, 看Exception的訊息就知道哪裡錯
以下為人腦debug, 如果出錯請勿見怪
當 input.length() >= 6,且 length >= 3 時,
i的範圍可能會大於2
當i >= 2時, input.substring((i*4),4) 就會爆掉
舊 2014-06-17, 08:13 PM #5
回應時引用此文章
smallwall離線中  
傳說
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 被 傳說 編輯.
舊 2014-06-17, 08:42 PM #6
回應時引用此文章
傳說現在在線上  
darkangel
Major Member
 
darkangel的大頭照
 

加入日期: Aug 2001
文章: 211
把 output 設成 static,不要 return。
很多年沒碰 java~ 我忘了可不可以這樣,不過你的程式有一個明顯的問題:return local variable...
我是用 C 的觀點來看的。
__________________
滿招損 謙受益

此文章於 2014-06-18 03:52 AM 被 darkangel 編輯.
舊 2014-06-18, 03:49 AM #7
回應時引用此文章
darkangel離線中  
記憶我的RDesign
Silent Member
 

加入日期: Aug 2013
文章: 0
引用:
作者傳說
編譯能過那就是邏輯或資料有問題
猜測如下:
1.從函數名稱看起來是要把16進位的字串轉成陣列
那麼Integer.parseInt(String args)是當10進位在解析
如果資料有A~F鐵定Exception
2.length從外部傳入,如果length<(input.length/2)
則回傳的陣列內容就有問題,這種寫法並不適當吧?
3.就算是檢查資料正確性,但都已經解成int了,為何要浪費效能再轉回String?

PS.絕大部份Exception都把原因寫的很清楚,就算看不懂也貼出來
不然人腦模擬執行不一定會和你遇到的錯誤一樣!!!


+1

直接把input和exception貼出來吧。
舊 2014-06-18, 05:15 AM #8
回應時引用此文章
記憶我的RDesign離線中  
silent
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 .....?!
舊 2014-06-18, 06:38 AM #9
回應時引用此文章
silent離線中  
silent
Major Member
 

加入日期: Dec 2012
文章: 182
StringIndexOutOfBoundsException
如果是這個的話..
舊 2014-06-18, 07:00 AM #10
回應時引用此文章
silent離線中  


    回應


POPIN
主題工具

發表文章規則
不可以發起新主題
不可以回應主題
不可以上傳附加檔案
不可以編輯您的文章

vB 代碼打開
[IMG]代碼打開
HTML代碼關閉



所有的時間均為GMT +8。 現在的時間是01:03 PM.


vBulletin Version 3.0.1
powered_by_vbulletin 2025。