如果任何先决条件失败,我正试图让赋值函数方法生成"BookException",但我遇到了一个错误,我不确定如何解决它。
public class Book
{
int n ;
BookTypes t;
String title;
double price;
public void Book (int n, BookTypes t, String title, double price)
{
setTitle(title);// error
setnumberOfPages(n);//error
setPrice(price);//error
setType(t);
}
public void setTitle(String title) throws BookException
{
if (title == null || title.length() < 1)
{
//throw new BookException("Stuff");
//System.out.println("Excepton");
}
else
{
this.title = title;
}
}
public String getTitle()
{
return title;
}
public void setnumberOfPages(int n) throws BookException
{
if ( n < 1)
{
System.out.println("Excepton");
}
else
{
this.n = n;
}
}
public int getnumberOfPages()
{
return n;
}
public void setPrice(double price) throws BookException
{
if (price < 0)
{
System.out.println("Excepton");
}
else
this.price = price;
}
public double getPrice()
{
return price;
}
public void setType(BookTypes t)
{
this.t = t;
}
public BookTypes getBookTypes()
{
return t;
}
public enum BookTypes {
HARDBACK,
SOFTBACK,
ELECTRONIC;
}
}
这就是我试图覆盖异常构造函数的地方
public class BookException extends Exception
{
public BookException()
{
}
public BookException(String message, Throwable throwable)
{
super(message, throwable);
}
}
这就是我试图测试Book类的地方,但我还没有走那么远。我之所以把它包括在内,是因为我不知道。
public class UseBook
{
public static void main(String[] args)
{
System.out.println("Hello World!");
Book b1 = null;
Book b2 = null;
try
{
b1 = new Book(90, BookTypes.HARDBACK, "Lord of the Flies", 8.99);
System.out.println(b1);
}
catch (Book Exception )
{
System.err.println(e.getMessage());
}
try
{
b1.SetnumberOfPages(-9);
}
catch (Book Exception)
{
System.err.println(e.getMessage());
}
}
}
Wiard,它是如何编译的。
是什么
catch (Book Exception )
{System.err.println(e.getMessage());
}
应该是
catch (BookException e)
{System.err.println(e.getMessage());
}
您有一大堆编译错误。您正在使用eclipse或intelliJ之类的IDE吗?这些应该标记它们,并给你一个合理的提示,告诉你需要做什么。
更改
public void Book (int n, BookTypes t, String title, double price)
至
public Book (int n, BookTypes t, String title, double price) throws BookException
void使其成为一个方法,移除它使其成为构造函数,这正是您所需要的。您还需要在其上添加一个throws(或在构造函数中捕获并处理它)
更改
catch (Book Exception )
至
catch (BookException e)
捕获错误,您需要像catch (ExceptionClass name)
一样指定它
更改
b1.SetnumberOfPages(-9);
至
b1.setnumberOfPages(-9);
方法调用的小写s。
现在代码至少可以编译了,你会得到的输出
Hello World!
com.example.Book@4e50df2e
Excepton
还有很多其他事情你应该解决,但是IDE应该给你一些指针。