![]()  | 
	
	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。 現在的時間是06:48 PM. | 
	vBulletin Version 3.0.1  
powered_by_vbulletin  2025。