【发布时间】:2018-07-27 18:53:24
【问题描述】:
在这里的第一篇文章和一个新的 Java 编程。在我的一项任务中,我们被要求创建一个程序,该程序在数组中包含一些对象,这些对象是具有某些信息字段的汽车,然后使用它我们必须通过自定义异常来确定是否会显示汽车。我还没有完全完成,但由于某种原因,每当我运行我的程序时,它总是抛出异常。任何指针的帮助将不胜感激,希望我的代码不会太糟糕!
这是我的主要内容:
package throwusedcarexceptions;
public class ThrowUsedCarExceptions {
public static void main(String[] args) {
int vNumber, year, miles;
String make;
double price;
try{
UsedCar[] cars = new UsedCar[2];
cars[0] = new UsedCar(1234, "Honda", 2001, 78340, 5999.99);
cars[1] = new UsedCar(1235, "Ford", 2005, 78340, 5999.99);
for (int i = 0; i < cars.length; i++){
System.out.println(cars[i]);
}
}
catch(UsedCarException error){
System.out.println(error.getMessage());
}
}
}
然后我的类判断是否抛出异常:
package throwusedcarexceptions;
public class UsedCar {
int vNumber, year, miles;
String make;
double price;
public UsedCar(int vNumber, String make, int year, int miles, double price)
throws UsedCarException{
setVNumber(vNumber);
if(vNumber < 1000 || vNumber > 9999)
throw(new UsedCarException());
setMake(make);
if(!"Ford".equals(make) || !"Honda".equals(make) ||
!"Toyota".equals(make) || !"Chrysler".equals(make) || !"Other".equals(make))
throw(new UsedCarException());
setYear(year);
if(year < 1990 || year > 2014)
throw(new UsedCarException());
setMiles(miles);
if(miles < 0)
throw(new UsedCarException());
setPrice(price);
if(price < 0)
throw(new UsedCarException());
}
public void setVNumber(int vNumber){
this.vNumber = vNumber;
}
public void setMake(String make){
this.make = make;
}
public void setYear(int year){
this.year = year;
}
public void setMiles(int miles){
this.miles = miles;
}
public void setPrice(double price){
this.price = price;
}
public int getVNumber(){
return vNumber;
}
public String getMake(){
return make;
}
public int getYear(){
return year;
}
public int getMiles(){
return miles;
}
public double getPrice(){
return price;
}
}
最后是我的异常类:
package throwusedcarexceptions;
public class UsedCarException extends Exception {
public UsedCarException(){
super("Error: Not a valid input");
}
}
感谢您的宝贵时间!
【问题讨论】:
-
当您从构造函数调用设置器时:为什么不将检查和异常引发放入设置器中?这样,当在对象上调用其中一个设置器时,您也将拥有它。
-
我正在考虑这个问题,但我们的任务说无论出于何种原因,我们都要在构造函数中引发异常,所以我就把它留在那里。
-
然后考虑不添加setter。在讨论中提出!
标签: java arrays exception exception-handling try-catch