Java 在for循环中将对象添加到数组中。设定并获取。
在将对象添加到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行没有错误标志,因此我不知道如何更正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行没有错
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];