2013-02-26 25 views
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; 
    } 
} 
+2

构造函数之后的所有代码如何与您的问题相关? – Dan 2013-02-26 00:25:45

+0

如果在构造函数中没有任何要做的事,那么你不需要声明它。 – 2013-02-26 00:26:27

+0

我认识的人最近也在学习编程。他的教材中说:“总是创造吸气和安装者”,但他从未停下来问他为什么需要他们。现在他暴露私人变数并隐藏公众。当你设计对象时,应该比“对象导向哲学”更符合特定部分的一般规则。这只狗是否需要知道猫发出的声音?也许是这样,但它是否需要知道猫的饥饿的内部状态呢?可能不会。构造函数会遵循类似的要点 – 2013-02-26 01:01:43

回答

7

构造函数用于“构建”一个对象。如果您没有需要设置的值,则不需要构造函数。你可能也想考虑让你的班级static。静态意味着你不需要创建它的一个实例来访问它的方法。当类的实例不包含特定的值时,这很有用,与您的非常相似!

+0

对于我的代码,java默认构造函数的外观如何? – babaysteps 2013-02-26 01:38:40

+0

默认的Java构造函数是由JVM为您生成的。你不需要写任何东西:) – christopher 2013-02-26 07:37:48

3

如果没有实例变量,并没有其它必需的任务来初始化类的一个对象,你可以离开了构造函数。 Java编译器将为您提供一个默认的编译器。通常我只包含一个显式的构造函数,当我确切地知道我需要它做什么。

2

您不必显式定义构造函数。已经有一个默认的构造函数。使用该构造函数并不是一个糟糕的编程习惯。

相关问题