たとえば、次の文字列があります。
0no1no2yes3yes4yes
ここの最初の 0 は削除して、配列のインデックスとして使用する必要があります。私はこの声明によってそうしています:
string = string.replaceFirst(dataLine.substring(0, 1), "");
ただし、この文字列を言うと:
10yes11no12yes13yes14no
を処理したいのです10
が、私のコードは1
.
したがって、並べ替えでは、1 桁は正常に機能しますが、2 桁または 3 桁はIndexOutOfBound
エラーになります。
コードは次のとおりです: http://pastebin.com/uspYp1FK
そして、ここにいくつかのサンプルデータがあります: http://pastebin.com/kTQx5WrJ
サンプル データの出力は次のとおりです。
Enter filename: test.txt
Data before cleanUp: {"assignmentID":"2CCYEPLSP75KTVG8PTFALQES19DXRA","workerID":"AGMJL8K9OMU64","start":1359575990087,"end":"","elapsedTime":"","itemIndex":0,"responses":[{"jokeIndex":0,"response":"no"},{"jokeIndex":1,"response":"no"},{"jokeIndex":2,"response":"yes"},{"jokeIndex":3,"response":"yes"},{"jokeIndex":4,"response":"yes"}],"mturk":"yes"},
Data after cleanUp: 0no1no2yes3yes4yes
Data before cleanUp: {"assignmentID":"2118D8J3VE7W013Z4273QCKAGJOYID","workerID":"A2P0GYVEKGM8HF","start":1359576154789,"end":"","elapsedTime":"","itemIndex":3,"responses":[{"jokeIndex":15,"response":"no"},{"jokeIndex":16,"response":"no"},{"jokeIndex":17,"response":"no"},{"jokeIndex":18,"response":"no"},{"jokeIndex":19,"response":"no"}],"mturk":"yes"},
Data after cleanUp: 15no16no17no18no19no
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 2
at java.lang.String.substring(String.java:1907)
at jokes.main(jokes.java:34)
基本的に、コードが行うことになっているのは、上記のようにデータを文字列に取り除き、数値を読み取り、その後yes
に のインデックスの値の増加がdataYes
続く場合、またはの値のno
増加が続く場合dataNo
です。理にかなっていますか?
私に何ができる?コードをより柔軟にするにはどうすればよいですか?