ksaitoの日記

日々試したことの覚え書き

JavaのScannerクラスは便利

C言語には、strtoken関数がありずいぶんお世話になりました。
JDK1.5からは、Scannerクラスが便利です。
strtoken関数と同じ機能(入力文字列の単語の切り出し、区切り文字の指定)に加えて、型変換もやってくれます。
例えば、1行目がデータ数、2行目移行が幅、高さ、データをデータを読み取るとします。

3	
5,6,12=E4D9HIF8=GN576LOABMTPKQSR0J
6,5,238=I67E9MBC1AF05HJKRLNGPDQSTO
4,6,94827601A3BCD5JGMEFNHLKI

次のように書くことができます。
区切り文字を適切に指定すれば、数値は、数値として、文字は文字列として切り出されます。(うーん、便利)

    public static void main( String[] args ) throws FileNotFoundException
    {
    	Scanner scan = new Scanner(new File(args[0]));
    	
    	int n = scan.nextInt();
    	String delim = scan.delimiter().pattern() + "|,";
    	scan.useDelimiter(delim);
    	for (int i=0; i < n; i++) {
    		System.out.println(String.format("%d, %d, %s", scan.nextInt(), scan.nextInt(), scan.next()));
    	}
    }