1

引数を受け付けないコンストラクターを書きたいのですが、インスタンス変数がない場合はどうすればよいでしょうか。インスタンス変数を持つコンストラクターを作成することに慣れています。Java がデフォルトのコンストラクターを持っていない場合、デフォルトのコンストラクターを作成することはわかっています。しかし、それは悪いプログラミング習慣だと言われた???(クラスの初心者)

public class Validator {
    public Validator() {
    }

    public String getString(Scanner sc, String prompt) {
        System.out.print(prompt);
        String s = sc.next(); // read user entry
        sc.nextLine(); // discard any other data entered on the line
        return s;
    }

    public int getInt(Scanner sc, String prompt) {
        int i = 0;
        boolean isValid = false;
        while (isValid == false) {
            System.out.print(prompt);
            if (sc.hasNextInt()) {
                i = sc.nextInt();
                isValid = true;
            } else {
                System.out.println("Error! Invalid integer value. Try again.");
            }
            sc.nextLine(); // discard any other data entered on the line
        }
        return i;
    }

    public int getInt(Scanner sc, String prompt, int min, int max) {
        int i = 0;
        boolean isValid = false;
        while (isValid == false) {
            i = getInt(sc, prompt);
            if (i <= min)
                System.out.println("Error! Number must be greater than " + min
                        + ".");
            else if (i >= max)
                System.out.println("Error! Number must be less than " + max
                        + ".");
            else
                isValid = true;
        }
        return i;
    }

    public double getDouble(Scanner sc, String prompt) {
        double d = 0;
        boolean isValid = false;
        while (isValid == false) {
            System.out.print(prompt);
            if (sc.hasNextDouble()) {
                d = sc.nextDouble();
                isValid = true;
            } else {
                System.out.println("Error! Invalid decimal value. Try again.");
            }
            sc.nextLine(); // discard any other data entered on the line
        }
        return d;
    }

    public double getDouble(Scanner sc, String prompt, double min, double max) {
        double d = 0;
        boolean isValid = false;
        while (isValid == false) {
            d = getDouble(sc, prompt);
            if (d <= min)
                System.out.println("Error! Number must be greater than " + min
                        + ".");
            else if (d >= max)
                System.out.println("Error! Number must be less than " + max
                        + ".");
            else
                isValid = true;
        }
        return d;
    }
}
4

3 に答える 3

7

コンストラクターは、オブジェクトを「構築」するために使用されます。設定する必要のある値がない場合は、コンストラクターは必要ありません。クラスを静的にすることも検討してください。静的とは、メソッドにアクセスするためにインスタンスを作成する必要がないことを意味します。これは、クラスのインスタンスに特定の値が含まれていない場合に便利です。

于 2013-02-26T00:27:48.793 に答える
3

クラスのオブジェクトを初期化するためのインスタンス変数やその他の必要なタスクがない場合は、コンストラクターを省略できます。Javaコンパイラはデフォルトのものを提供します。通常、明示的なコンストラクターを含めるのは、必要なことを正確に理解している場合のみです。

于 2013-02-26T00:26:18.937 に答える
2

コンストラクターを明示的に定義する必要はありません。すでにデフォルトのコンストラクターがあります。そして、そのコンストラクターを利用することは、プログラミングの悪い習慣ではありません。

于 2013-02-26T00:27:22.100 に答える