Java 在for循环中将对象添加到数组中。设定并获取。

Java 在for循环中将对象添加到数组中。设定并获取。,java,arrays,setter,getter,Java,Arrays,Setter,Getter,在将对象添加到7个对象的数组中时,我有点困惑 我有一个for循环,我想添加一个带有3个参数的item对象。我已经使用了set和get。在for循环的末尾,我想将item对象添加到数组列表中。当我尝试执行此操作时,会出现一个错误: 线程“main”java.lang.NullPointerException中出现异常 在item.add处(item.java:88) 在homework3main.main(homework3main.java:38) item类中第88行和main中第38行没有错

在将对象添加到7个对象的数组中时,我有点困惑

我有一个for循环,我想添加一个带有3个参数的item对象。我已经使用了set和get。在for循环的末尾,我想将item对象添加到数组列表中。当我尝试执行此操作时,会出现一个错误:

线程“main”java.lang.NullPointerException中出现异常 在item.add处(item.java:88) 在homework3main.main(homework3main.java:38)

item类中第88行和main中第38行没有错误标志,因此我不知道如何更正

   public class item {



public static int x = 0;
public static String setName;
public static double setPrice;
public static int setPrioirty;


public  int priority=-1;
public static double price;
public static String name;
private static item[] list; 



item(){
    this(-1,0, null);
    priority=-1;
    price=0;
    name="No Name yet.";


}// default constructor. 


public item(int i, double j, String k) {
    setitem(i,j,k);//constructor with 3 arguments. 
}

public void setitem (int i, double j, String k){// setting item with 3 attributes.
    setPriority(i);
    setPrice(j);
    setName(k);

}

public void setName(String k) {//setting individual attributes in item.

    // TODO Auto-generated method stub //page 378
    name=k;
    priority=-1;
    price=0;
}


public void setPrice(double j) {//setting individual attributes in item.
    // TODO Auto-generated method stub
    if (j<0&&j>100){
        System.out.println("Error: price is too low or high");

    }

    else
        price=j;

    }

public void setPriority(int i) {//setting individual attributes in item.
    // TODO Auto-generated method stub
    priority =((i>=0&&i<7)?i:0);
    }


public double getPrice(){
    return price;

}
public String getName(){

    return name;

}
public double getPriority(){
    return priority;

}

// eclipse made me create this method when I wanted to "add an itemObject to the list"
 public static void add(item itemObject) {

     System.out.println("Enter an item"+x);
    if (x<7)
    {
        list[x]=itemObject;
    System.out.println("Item added at index " + x);

    x++;
    }








 }

    }
公共类项目{
公共静态int x=0;
公共静态字符串集合名;
公共静态双重定价;
公共静态整数设置优先级;
公共int优先级=-1;
公共静态双重价格;
公共静态字符串名;
私有静态项[]列表;
项目({
这是(-1,0,null);
优先级=-1;
价格=0;
name=“还没有名字。”;
}//默认构造函数。
公共项(整数i,双j,字符串k){
setitem(i,j,k);//具有3个参数的构造函数。
}
公共void setitem(inti,双j,字符串k){//设置具有3个属性的项。
设定优先权(i);
设定价格(j);
集合名(k);
}
public void setName(字符串k){//设置项中的各个属性。
//TODO自动生成的方法存根//第378页
name=k;
优先级=-1;
价格=0;
}
public void setPrice(双j){//设置项中的单个属性。
//TODO自动生成的方法存根
如果(j100){
System.out.println(“错误:价格过低或过高”);
}
其他的
价格=j;
}
public void setPriority(int i){//设置项中的各个属性。
//TODO自动生成的方法存根

优先级=((i>=0&&imain
方法是初始化
项的数组的错误位置

item list[]=new item [7];
您已经声明了一个本身称为
list
的本地数组。请在其构造函数中或作为声明的一部分初始化
item
list
实例变量


此外,我看不出有任何理由说明为什么使用
main
方法的类,
homework3main
应该扩展
item
。另外,Java中的命名约定是以大写字符开始命名类,例如
item
homework3main
。您有一个数组,但尚未创建它的名称元素,并且您正在尝试对其调用方法。请遵循适当的Java命名约定。类名应以大写字母开头。我只是尝试了不同的方法来让它工作,这就是为什么我放置extend item。我不认为extending item在main中可以工作,但还是尝试了。谢谢,我在我的item类中将它作为静态添加扩展Main中的项还允许我在Main中使用list,而无需创建局部变量。
item list[]=new item [7];