[Java]2次元配列の動的確保を使った文字列処理 | slont_code

slont_code

// 人と知識をつなげるcode

この間、生まれて初めてのプログラミングコンテストに出てみました。全く経験がなかったため、結果は散々でしたが、とても面白かったし、非常に良い経験になりました。

ところで、使った言語はJavaだったのですが、Javaはなんとなく文字列処理が苦手なイメージがありますね。とりあえず、与えられた文字列は全部配列に入れちゃえばなんとかなりそう!と単純な思考で、読み込むファイルを指定すると、文字列を行と空白に分けて配列格納してくれるという簡単なプログラムを書いてみました。と、これじゃあよくわからないので、コードを以下に。

SampleProg.java
public ArrayList<ArrayList<String>> fileReader() {
try {
ArrayList<ArrayList<String>> allStr = new ArrayList<ArrayList<String>>();
File file = new File(FILEPATH);
Scanner sc = new Scanner(file);

while(sc.hasNext()) {
ArrayList<String> lineStr = new ArrayList<String>();
String tmpStr = sc.nextLine();
Scanner lineSc = new Scanner(tmpStr);

while(lineSc.hasNext()) {
lineStr.add(lineSc.next());
}
allStr.add(lineStr);
lineSc.close();
}
sc.close();
return allStr;
} catch (FileNotFoundException e) {
e.printStackTrace();
}
return null;
}

public static void main(String[] args) {
FileRW frw = new FileRW();
System.out.println(frw.fileReader("test.txt"));
System.out.println(frw.fileReader("test.txt").get(3));
System.out.println(frw.fileReader("test.txt").get(3).get(2));
}

テキストを読み込むと
test.txt
fas gfe
gagb wryj hyetrs
gwvsrgbwtrb
bw rb wr stb
wetgw twh dfgwetrrwhrw
hwth whrw thtwr

こんな感じに出力されます。
[[fas, gfe], [gagb, wryj, hyetrs], [gwvsrgbwtrb], [bw, rb, wr, stb], [wetgw, twh, dfgwetrrwhrw], [hwth, whrw, thtwr]]
[bw, rb, wr, stb]
wr

リソース食いまくりですが、わかりやすいかと(笑)
サンプルコードちょっと変えれば、ライン毎に処理出来たりするので、例えば空白抜きの文字数調べるのとか、マッチングには使えるんじゃないかな、と思います。