【发布时间】:2014-12-21 17:25:45
【问题描述】:
这是我写的代码:
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;
}
我在这里读到的一些帖子反对在构造函数中执行方法,因为对象没有完全初始化。 但由于我调用的方法只检查输入的实际参数是否正确 这是正确的方法吗? 如果没有,请建议我这样做的最佳方法。 也欢迎对代码的其他方面提出建议或批评。
【问题讨论】:
-
抛出异常而不是/除了使用
System.out.println。如果对象构造不正确,您不希望调用代码尝试使用该对象,这在这里很容易发生。 -
另外,
ConstInitCheck有什么作用?你没有向它传递任何参数,它在检查什么? -
我看到了,并编辑了代码
-
好的,但是请您检查一下代码并完全编辑它吗?如果你问“我的代码可以改进吗”然后你一边编辑代码,那会浪费每个人的时间。是的,它可以改进,为什么不你先改进它,然后问我们还有什么可以做的? (另外,请注意您有两次对 ConstInitCheck 的调用)
-
你很抱歉。实际上这已经在我的代码中了,但是在创建帖子时我可能不小心删除了它。
标签: methods constructor initialization