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 回答