文字列形式のメッセージを受け取る関数があります。 "HTTP/1.1 GET/1/\ n"Javaで文字列を分割する
文字列を3つの小さな部分文字列、バージョン、コマンド、および数値に分解するには、java.String.splitメソッドを使用しています。次に、部分文字列からoringal文字列を再構成して出力します。
しかし、私はプログラムの範囲外のArrayIndexで結果tehの機能を実行すると:1、それでも適切に機能。私は、デバッガ(NetBeansの)ステップによって、プログラムステップを実行するときしかし、このプログラムは、通常の
として境界nonesenseや機能のうち、ArrayIndexで任意の提案を発生しないのですか?
サム
String output = "";
String[] tokens = clientMessage.split(" ");
String version = tokens[0];
String command = tokens[1];
String potNum = tokens[2];
output = version + " " + command + " " + potNum;
EDITはい、プログラムがマルチスレッド化され、clientMsessage文字列は、 "HTTP/1.1 GET/1/\ n" はすべての時間を含んで、clientMessage FO値が変わることはありません。 clientMessageは、クライアントプログラムから送信された後、サーバー上で処理文字列であり、出力はEHクライアントTOTバックSNETですが、私は、配列エラー
'clientMessage'何ですか?多くの場合、デバッグ時のトレースと通常の実行時の動作の違いを見ると、データ競合の指標となります。**あなたのプログラムはマルチスレッドですか**特に、それは非同期的に 'clientMessage'を生成しますか? – amit
私の推測では、あなたのclientMessage値は実行の間で異なっていると思います。両方の実行で値を出力して、clientMessageが同じであることを確認します。 – gorjusborg
clientMessageの期間はどのくらいですか?クライアントメッセージに十分なトークンがない場合、command = tokens [1]を実行するとArrayIndexOutOfBounds例外が発生します – CodeBlue