Methods 检查构造函数中条件的方法

Methods 检查构造函数中条件的方法,methods,constructor,initialization,Methods,Constructor,Initialization,这是我写的代码: class Car public Car(String Company,String Model,int Color,String FuelType,double Price,String Engine) { boolean check = ConstInitCheck(Company,FuelType,Engine,Color); if((check)) { this.Company = Company; this.Model = Model; this.Color =

这是我写的代码:

class Car
public Car(String Company,String Model,int Color,String FuelType,double Price,String Engine)
{
boolean  check =  ConstInitCheck(Company,FuelType,Engine,Color);
if((check))
{
this.Company = Company;
this.Model = Model;
this.Color = Color;
this.FuelType = FuelType;
this.Price = Price;
this.Engine = Engine;
}
else System.out.println("Sorry One of the Inputs were wrong! Please Try Again!");
}


public Car(String Company,String Model,int Color,String FuelType,double Price,String Engine,String VIP_Features)
{
boolean  check =  ConstInitCheck(Company,FuelType,Engine,Color);
if((check))
{
this.Company = Company;
this.Model = Model;
this.Color = Color;
this.FuelType = FuelType;
this.Price = Price;
this.Engine = Engine;
if(!VIP_Features.equals(""))this.VIP_Features = VIP_Features;
else this.VIP_Features="None";
}
else System.out.println("Sorry One of the Inputs were wrong! Please Try Again!");
}



private boolean ConstInitCheck(String Company,String FuelType,String Engine,int Color)
{
boolean a = ((Company.toUpperCase().equals("SUZUKI"))||(Company.toUpperCase().equals("TOYOTA"))||(Company.toUpperCase().equals("HYUNDAI"))||
(Company.toUpperCase().equals("VOLKSWAGEN"))||(Company.toUpperCase().equals("FORD"))||(Company.toUpperCase().equals("HONDA"))||(Company.toUpperCase().equals
("CHEVROLET"))||(Company.toUpperCase().equals("SKODA"))||(Company.toUpperCase().equals("FIAT")));
boolean b = ((FuelType.toUpperCase().equals("DIESEL"))||(FuelType.toUpperCase().equals("PETROL"))||(FuelType.toUpperCase().equals("GAS")));
boolean c = ((Engine.toUpperCase().equals("V2"))||(Engine.toUpperCase().equals("V4"))||(Engine.toUpperCase().equals("V6"))||(Engine.toUpperCase().equals("V8"))||

(Engine.toUpperCase().equals("V12")));
boolean d = Color >= 0 & Color <= 255;
boolean initcheck = a && b && c && d;
return initcheck;
}
等级车
公共汽车(字符串公司、字符串型号、整数颜色、字符串燃料类型、双倍价格、字符串引擎)
{
布尔检查=检查(公司、燃料类型、发动机、颜色);
如果((检查))
{
这个公司=公司;
这个模型=模型;
这个。颜色=颜色;
this.FuelType=FuelType;
这个。价格=价格;
这个。发动机=发动机;
}
else System.out.println(“很抱歉,其中一个输入错误!请重试!”);
}
公共汽车(字符串公司、字符串型号、整数颜色、字符串燃料类型、双倍价格、字符串引擎、字符串VIP_功能)
{
布尔检查=检查(公司、燃料类型、发动机、颜色);
如果((检查))
{
这个公司=公司;
这个模型=模型;
这个。颜色=颜色;
this.FuelType=FuelType;
这个。价格=价格;
这个。发动机=发动机;
如果(!VIP\u Features.equals(“”)this.VIP\u Features=VIP\u Features;
否则。VIP_Features=“无”;
}
else System.out.println(“很抱歉,其中一个输入错误!请重试!”);
}
私有布尔值检查(字符串公司、字符串燃料类型、字符串引擎、整型颜色)
{
布尔值a=((Company.toUpperCase().equals(“铃木”))||(Company.toUpperCase().equals(“丰田”))|(Company.toUpperCase().equals(“现代”))||
(Company.toUpperCase().equals(“大众”))| |(Company.toUpperCase().equals(“福特”)| |(Company.toUpperCase().equals(“本田”)| |(Company.toUpperCase().equals.)
(“雪佛兰”)| |(Company.toUpperCase().equals(“斯柯达”)| |(Company.toUpperCase().equals(“菲亚特”));
布尔b=((FuelType.toUpperCase().equals(“柴油”))||(FuelType.toUpperCase().equals(“汽油”))|(FuelType.toUpperCase().equals(“汽油”));
布尔c=((Engine.toUpperCase().equals(“V2”))| |(Engine.toUpperCase().equals(“V4”))| |(Engine.toUpperCase().equals(“V6”))| |(Engine.toUpperCase().equals(“V8”))||
(Engine.toUpperCase().equals(“V12”));

布尔值d=Color>=0&Color使用工厂方法。将检查移动到方法和构造函数外部。 结果是一个有效对象或根本没有对象

    class Car{

       //private constructor to prevent creating objects from outside the factory method
       private Car(String Company,String Model,int Color,String FuelType,double Price,String Engine,String VIP_Features)
       {
          this.Company = Company;
          this.Model = Model;
          this.Color = Color;
          this.FuelType = FuelType;
          this.Price = Price;
          this.Engine = Engine;
       }

       //static method that creates the object after functional checks
       public static Car Create(String Company,String Model,int Color,String FuelType,double Price,String Engine,String VIP_Features)
       {
          if(ConstInitCheck(Company,FuelType,Engine,color)){
              return new Car(Company,Model,Color,FuelType,Price,Engine,VIP_Features);
          }
          return null; // or throw exception
       }

       private static boolean ConstInitCheck(String Company,String FuelType,String Engine,int Color){
          ...
       }

    }
用法:

var car = Car.Create(Company,Model,Color,FuelType,Price,Engine,VIP_Features);

除了使用
System.out.println
之外,还抛出一个异常,而不是/除了使用
System.out.println
。如果对象构造不正确,您不希望调用代码尝试使用该对象,这在这里很容易发生。此外,
continitcheck
做什么?您没有向它传递任何参数,它在检查什么?我看到了,并编辑了代码是可以的,但是你能检查一下代码并完全编辑它吗?如果你问“我的代码可以改进吗”,然后在继续的过程中编辑代码,那就浪费了每一个人的时间。是的,它可以改进,你为什么不先改进它,然后问我们还能做什么?(另外,请注意,你有两个电话要检查)很抱歉。事实上,我的代码中已经有了这一点,但在创建帖子时,我可能不小心删除了它。谢谢你的提示,我是Java新手,这就是为什么我不知道设计模式是如何工作的。我会研究它并尝试一下。