我有一個接受字符串形式的消息的函數。消息如下所示:「HTTP/1.1 GET/1/\ n」在Java中拆分字符串
我一直在使用java.String.split方法將字符串分解爲三個較小的子字符串,版本,命令和編號。然後我重新構造子串中的正弦字符串並輸出它。
但是,當我運行teh函數時,程序導致ArrayIndex超出界限:1,但仍然正常工作。但是當我在調試器(netbeans)中一步一步地運行程序時,程序不會導致ArrayIndex超出界限無意義和功能正常
有什麼建議嗎?
山姆
String output = "";
String[] tokens = clientMessage.split(" ");
String version = tokens[0];
String command = tokens[1];
String potNum = tokens[2];
output = version + " " + command + " " + potNum;
編輯肯定的,程序是多線程的,在clientMsessage字符串包含 「HTTP/1.1 GET/1/\ N」 的時候,FO clientMessage值不會改變。 clientMessage是從客戶端程序發送的字符串,然後在服務器上處理,輸出是snet回到客戶端,但我不斷收到陣列錯誤
是什麼'clientMessage'?通常情況下,如果您在跟蹤調試期間和正常運行期間看到行爲差異,則表示數據競爭,**是程序多線程?**,具體而言,它是否會異步生成'clientMessage'? – amit 2012-03-14 13:04:02
我的猜測是你的clientMessage值在運行之間是不同的。通過在兩次運行中輸出值來驗證clientMessage是否相同。 – gorjusborg 2012-03-14 13:04:13
clientMessage有多長時間?如果客戶端消息中沒有足夠的令牌,那麼當您執行命令=令牌時,您將獲得ArrayIndexOutOfBounds異常[1] – CodeBlue 2012-03-14 13:04:46