我有一个接受字符串形式的消息的函数。消息如下所示:“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