【发布时间】:2015-11-30 23:40:56
【问题描述】:
我有一个问题,我不知道如何解决。
所以我有 3 个类:第一个是主要的,第二个是书,第三个是一个书架,里面有一些书。
图书课
public class Book {
private String title;
private int year;
private String edition;
public Book(String title, int year, String edition) {
this.title= title;
this.year= year;
this.edition = edition;
}
public Book(Book l)
{
this.title = l.title;
this.year = l.year;
this.edition = l.edition;
}
主类
public static void main(String[] args) {
Book one = new Book("Title1", first, 2014, "Edition1");
Book two = new Book("Title2", second, 2013, "Edition2");
Book three= new Book("Title3", third, 2015, "Edition3");
Book four = new Book("Title4", fourth, 2015, "Edition4");
Book[] v = new Book[3];
v[0] = one;
v[1] = two;
v[2] = three;
Shelf shelf= new Shelf();
try{
shelf.append(four);
}(catch myException e)
{
System.out.println(e.toString());
}
货架类
public class Shelf {
private Book[] v;
public Shelf()
{
v = new Book[3];
}
public void append (Book x) throws myException
{
if(x != null && v != null)
{
Book[] vAppend = new Book[v.length+1];
for(int i=0; i<v.length; i++)
{
vAppend[i] = new Book(v[i]);
}
vAppend[v.length] = new Book(x);
v = vAppend;
}
throw new myException("Null");
}
如何在架子类中执行 append 方法?显然它给了我 NullPointerException 因为我使用的数组是空的,但我不知道如何管理它。
还有一个问题,如何在 Shelf 类中插入 Book 对象?
首先在构造函数中我写了“this.v = v”,所以当我声明一个架子对象时,我在主类中传递了它的 v 数组,它不为空,它有效,但练习说不要这样做.
附:我必须用普通数组做这个练习,我的意思是没有arrayList,我还是要学习它。
【问题讨论】:
-
作为旁注,为什么您明确使用此
myException类是没有意义的。如果您要点击NullPointerException,就让它发生,不要担心专门编写代码来抛出您自己的自定义 NPE。 -
另外,
main中的Book构造函数看起来不对...Book one = new Book("Title1", first, 2014, "Edition1");。 “第一”从何而来? -
为什么说你使用的数组是空的?
v在 Shelf 的构造函数中初始化。为什么将其初始化为 3 号? -
请看
java.util.ArrayList。
标签: java containers