好的,这应该很简单。但是我已经在这个好时光了,并且无法弄清楚为什么它是一个nullpointerexception。
我需要为" Sally"创建一个数组。然后测试它的长度,该长度应为0.这是驱动程序类的主要方法。
LendingItem[] sallysItemList = sally.getSignedOutItems();
if (sallysItemList.length == 0)
这是在创建sally的对象类中。腐烂的B.
private LendingItem[] signedOutItems;
public LendingItem[] getSignedOutItems() {
return signedOutItems;
}
我觉得我需要将Lending项目声明为
private LendingItem[] signedOutItems = {};
但我仍然会遇到错误。
编辑:
我要添加更多,以便更容易理解我需要做什么
提供以下代码。
System.out.println("\n*** Test case #1: Create a CardHolder object & test accessors");
CardHolder sally = new CardHolder("Sally Smith",
152,
"454-1234");
System.out.println("Name: " + sally.getName()
+ "\nAppt #: " + sally.getAptNumber()
+ "\nPhone: " + sally.getPhoneNumber()
+ "\nMember #: " + sally.getMembershipNumber());
LendingItem[] sallysItemList = sally.getSignedOutItems();
if (sallysItemList.length == 0)
System.out.println("Correct result: Sally has zero lending items.");
else
System.out.println(">> ERROR: Sally has more than zero lending items.");
System.out.println("\n*** Test case #6: Sign out one LendingItem");
if(sally.signOut(testItemList[0]))
{ System.out.println("Correct result: Sally signed out an item successfully.");
sallysItemList = sally.getSignedOutItems();
if (sallysItemList.length == 1)
System.out.println("Correct result: Sally has one lending item.");
else
System.out.println(">> ERROR: Sally has other than one lending item.");
}
else
System.out.println(">> ERROR: Sally was unable to sign out an item.");
到目前为止,这是我的代码。 只需要退回当前退出的项目。
public LendingItem[] getSignedOutItems() {
return signedOutItems;
}
这是我们期望添加到数组的方式,它需要返回一个布尔值
public boolean signOut(LendingItem lendingItem) {
if (signedOutItems.length < 7) {
signedOutItems[0] = lendingItem;
return true;
} else {
return false;
}
不需要直接的代码只是想知道如何实现这一目标。
答案 0 :(得分:2)
此
private LendingItem[] signedOutItems;
相当于
private LendingItem[] signedOutItems = null;
所以当你这样做时,
public LendingItem[] getSignedOutItems() {
return signedOutItems;
}
返回null
。初始化并向元素添加元素。像,
private LendingItem[] signedOutItems = new LendingItem[10];
创建一个包含10 LendingItem
(s)空间的数组。请注意,这10个插槽中的每个插槽都初始化为null
。
答案 1 :(得分:0)
这是制作一个使用数组维护列表的疯狂类的一种方法,能够返回不同大小的数组。
public class CardHolder {
private LendingItem[] lendingItems;
public CardHolder () {
lendingItems = new LendingItem[0];
}
public boolean signOut(LendingItem item) {
if (lendingItems.length >= 7) return false;
lendingItems = Arrays.copyOf(lendingItems, lendingItems.length + 1); //copies old array, but adding a null value to the new one
lendingItems[lendingItems.length - 1] = item; //replace the null value with the new item to add
return true;
}
public LendingItem[] getSignedOutItems() {
return lendingItems;
}
}
这应该有助于你开始..