読者です 読者をやめる 読者になる 読者になる

丸三角四角

IT業界にしがみつく新人SEが立派なプログラマになろうともがく奮闘記

【Java】プログラミングコンテスト用固有処理基底クラス_Ver1

今回はプログラミングコンテストで問題を解く際に、同じ処理ばかり書くのが面倒な部分があったので基底クラスとしてまとめました。

コード更新しています。使いやすい方を参照していただればと思います。

dadainu.hateblo.jp

テストドライバ用の基底クラスはもともと作成していましたが、実際に処理を行うクラス達のほうには基底クラスを作成していなかったので、今回作成しました。

以下コードです。

import java.io.File;
import java.util.Scanner;

public abstract class BaseExe {

    public void exeSysIn() {
        try (Scanner scan = new Scanner(System.in)) {
            execute(scan);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void exeFileIn(String inDataPath) {
        try (Scanner scan = new Scanner(new File(inDataPath))) {
            execute(scan);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    protected abstract void execute(Scanner scan);
}

コードはすごく短いです。一般化したのは「exeSysIn」と「exeFileIn」です。この二つのメソッドは毎回書いていたので、このクラスを継承することで子クラスはだいぶコードが短くなります。子クラスは「execute」メソッドに処理を記載します。

もっと良くできることがありましたら、コメントをお願い致します。

以下はテストドライバの基底クラスです。

dadainu.hateblo.jp

アルゴリスムで困った時は、以下の本を参考にしてます。Javaに置き換えるのが少々難解ですが、、、