gpt4 book ai didi

java - 无法容纳元素

转载 作者:行者123 更新时间:2023-12-01 07:12:07 26 4
gpt4 key购买 nike

我有这个 Item 类

public class Item {

private String id;
private int count;
private String name;


public int getcount() {
return this.count;
}

public Item(String name) {
this.name=name;
this.id = "";
}

public Item(String id, String name) {
this.name=name;
this.id=id;
}

public Item(int count) {
this.count=count;
}

public String getItemName() {
return this.name;
}

public String getItemId() {
return this.id;
}

}

然后我有 ItemSet 类,它将包含项目列表

public  class ItemSet  extends ArrayList<Item> {

private List<Item> hold;

ItemSet(Item item) {
this.hold.add(item);
}

ItemSet() {
//throw new UnsupportedOperationException("Not yet implemented");
}


public List<Item> getItemSet() {
return this.hold;
}
}

我有包含 ItemSets 列表的事务类:

public class Transaction extends ArrayList<ItemSet> {

// ArrayList<String> l;
public ItemSet getUniqueItem() {
ResultSet rs;
Database d=new Database();
ItemSet unique=new ItemSet();
unique.clear();
String query="Select id,name from item";
rs=d.sendQuery(query);
try{
while(rs.next()) {
//System.out.println(rs.getString(1)+"\t"+rs.getString(2));
Item item=new Item(rs.getString(1),rs.getString(2));
unique.add(item);
}
}catch(Exception e){
System.out.print(e.getMessage());
}

for(Item item:unique) {
// System.out.println(item.getItemId()+": "+item.getItemName());
}
return unique;
}

public int countItems(ItemSet itemset) {
ResultSet rs;
Database d=new Database();
String query="";
int count=0;
for(Item i:itemset) {
String id=i.getItemId();
query="SELECT count(*) FROM `item_transaction` where item_id="+i;
rs=d.sendQuery(query);
try {
while(rs.next()) {
//System.out.print(rs.getString(1));
count=Integer.parseInt(rs.getString(1));
System.out.print(count+"\t");
}
}catch(Exception e){ }
}

return count;
}

}

这是主类

public class Ap {

public static void main(String args[]) {
Transaction t=new Transaction();
Transaction Ci=new Transaction();
Transaction Li=new Transaction();

ItemSet I=t.getUniqueItem();
for(Item i:I) {
System.out.println(i);
ItemSet itemSet=new ItemSet(i);
Ci.add(itemSet);
}

for(ItemSet itemSet:Ci) {
int x=t.countItems(itemSet);
System.out.print(x+"\t");
}

/* Iterator iter=Li.iterator();
while(iter.hasNext()) {
// System.out.print(iter.next()+"\t");
}
*/

}
}

问题是我越来越

Exception in thread "main" java.lang.NullPointerException
at ItemSet.<init>(ItemSet.java:25)
at Ap.main(Ap.java:30)

哪里

ItemSet.java:25 指的是 this.hold.add(item);

在哪里

Ap.java:30ItemSet itemSet=new ItemSet(i);//创建新的 ItemSet

请帮我找出错误。

最佳答案

this.hold.add(item); 

hold (List) 默认为 null 因为实例变量。您需要在添加项目之前实例化。您对 null 结果执行什么操作 NullPointerException

示例:

ItemSet(Item item)
{
hold = new ArrayList<Item>();
this.hold.add(item);

}

扩展ArrayList()有什么具体原因吗?

关于java - 无法容纳元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12220752/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com