Java 创建add()方法将对象插入数组中,得到的都是空值

Java 创建add()方法将对象插入数组中,得到的都是空值,java,Java,这是一个名为Doglist的类,用于将对象添加到数组中 public class DogList { private int numItems; private DogItem[] dogListArray; private int position; DogList () { numItems=0; position = 0; dogListArray = new DogItem[10]; } public void add (DogItem

这是一个名为Doglist的类,用于将对象添加到数组中

public class DogList {
  private int numItems;
  private DogItem[] dogListArray;
  private int position;

  DogList ()    {
    numItems=0;
    position = 0;
    dogListArray = new DogItem[10]; 
}

public void add (DogItem item)  {
    dogListArray[numItems++]= new DogItem(item.getName(), 
                                          item.getBreed(),
                                          item.getWeight(),
                                          item.getOwner1(),
                                          item.getOwner2()
                                          );
   }

public String toString()    {
    String result = "";
    for (int i=0; i<numItems; i++)  {
        result += dogListArray[i].toString() + "\n";
    }
    return result;
}
  public DogItem searchForDogItem (DogItem gi)  {

    System.out.println("Here is your obj value: " + gi ); 

    return null;
}//This is the one im having trouble with.
}
我走的时候会设法把事情弄清楚

这是我得到的输出


这是您的obj值:null null 0.0 null null

好,下面是它可能的外观。就因为我已经看错了。但是,您可能希望重写DogItem的toString()方法

这方面的主要方法示例:

public class Main {

    public static void main(String[] args) {
        DogItem dogItem = new DogItem("Spot", "Dalmation", "45", "Bob", "Sandy");
        DogItem.add(dogItem);

        DogItem result = DogItem.searchForItem("Spot");

        if (result == null) {
            System.out.println("Dog not found");
            // GUI error output goes here
        } else {
            System.out.println("Here is your obj value: " + result);
            // Where your GUI stuff goes
        }
    }
}
public class DogItem {
    private static DogItem[] dogListArray = new DogItem[100];
    private static int numItems = 0;

    private String name;
    private String breed;
    private String weight;
    private String owner1;
    private String owner2;

    public DogItem(String name, String breed, String weight, String owner1, String owner2) {
        this.name = name;
        this.breed = breed;
        this.weight = weight;
        this.owner1 = owner1;
        this.owner2 = owner2;
    }

    public static void add(DogItem dogItem) {
        dogListArray[numItems++] = dogItem;
    }

    public static DogItem searchForItem(String name) {
        DogItem dogItem = null;
        for (DogItem result : dogListArray) {
            if (result != null) {
                if (result.getName() == name) {
                    dogItem = result;
                }
            }
        }
        return dogItem;
    }

    @Override
    public String toString() {
        String result = name + ", " + breed + ", " + weight + ", " + owner1 + " " + owner2;
        return result;
    }

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getBreed() {
        return breed;
    }
    public void setBreed(String breed) {
        this.breed = breed;
    }
    public String getWeight() {
        return weight;
    }
    public void setWeight(String weight) {
        this.weight = weight;
    }
    public String getOwner1() {
        return owner1;
    }
    public void setOwner1(String owner1) {
        this.owner1 = owner1;
    }
    public String getOwner2() {
        return owner2;
    }
    public void setOwner2(String owner2) {
        this.owner2 = owner2;
    }
}
例如:

public class Main {

    public static void main(String[] args) {
        DogItem dogItem = new DogItem("Spot", "Dalmation", "45", "Bob", "Sandy");
        DogItem.add(dogItem);

        DogItem result = DogItem.searchForItem("Spot");

        if (result == null) {
            System.out.println("Dog not found");
            // GUI error output goes here
        } else {
            System.out.println("Here is your obj value: " + result);
            // Where your GUI stuff goes
        }
    }
}
public class DogItem {
    private static DogItem[] dogListArray = new DogItem[100];
    private static int numItems = 0;

    private String name;
    private String breed;
    private String weight;
    private String owner1;
    private String owner2;

    public DogItem(String name, String breed, String weight, String owner1, String owner2) {
        this.name = name;
        this.breed = breed;
        this.weight = weight;
        this.owner1 = owner1;
        this.owner2 = owner2;
    }

    public static void add(DogItem dogItem) {
        dogListArray[numItems++] = dogItem;
    }

    public static DogItem searchForItem(String name) {
        DogItem dogItem = null;
        for (DogItem result : dogListArray) {
            if (result != null) {
                if (result.getName() == name) {
                    dogItem = result;
                }
            }
        }
        return dogItem;
    }

    @Override
    public String toString() {
        String result = name + ", " + breed + ", " + weight + ", " + owner1 + " " + owner2;
        return result;
    }

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getBreed() {
        return breed;
    }
    public void setBreed(String breed) {
        this.breed = breed;
    }
    public String getWeight() {
        return weight;
    }
    public void setWeight(String weight) {
        this.weight = weight;
    }
    public String getOwner1() {
        return owner1;
    }
    public void setOwner1(String owner1) {
        this.owner1 = owner1;
    }
    public String getOwner2() {
        return owner2;
    }
    public void setOwner2(String owner2) {
        this.owner2 = owner2;
    }
}
不过,我建议您做以下更改:

    private static ArrayList<String> owners;
    private static ArrayList<DogItem> dogsList;
    public DogItem(String name, String breed, String weight, String owner) {
        this.name = name;
        this.breed = breed;
        this.weight = weight;
        this.owners.add(owner);
    }
    public void init() {
        owners = new ArrayList<String>();
        dogsList = new ArrayList<DogItem>();
    }
    public void addDog(DogItem dogItem) {
        dogsList.add(dogItem);
    }
    public DogItem searchForItem(String name) {
        DogItem dogItem = null;
        for (DogItem result : dogsList) {
            if (result != null) {
                if (result.getName() == name) {
                    dogItem = result;
                }
            }
        }
        return dogItem;
    }
    public void addOwner(String owner) {
        owners.add(owner);
    }
    public String getOwner() {
        return owners.get(owners.size() - 1);
    }
私有静态数组列表所有者;
私有静态数组列表;
公共狗项(字符串名称、字符串品种、字符串重量、字符串所有者){
this.name=名称;
这个品种;
重量=重量;
this.owner.add(owner);
}
公共void init(){
所有者=新的ArrayList();
dogsList=newarraylist();
}
公共无效添加狗(DogItem DogItem){
添加(dogItem);
}
public DogItem searchForItem(字符串名称){
DogItem DogItem=null;
用于(DogItem结果:dogsList){
如果(结果!=null){
if(result.getName()==name){
dogItem=结果;
}
}
}
退货项目;
}
公共void addOwner(字符串所有者){
所有者。添加(所有者);
}
公共字符串getOwner(){
返回owners.get(owners.size()-1);
}

您遗漏了很多代码。请创建一个。我正要说同样的话。。。你对变量或对象的引用我们看不到你在做什么。。。我有一个线索,但是你没有足够的信息来说明问题所在。现在更新我在下面贴了一个答案,我已经尝试过了。谢谢你,我现在正在查看。在那里添加了错误检查,以防找不到狗。另外请注意,else语句是您将值分配给正在实现的GUI的地方。好的,我明白了,您的代码可以工作,但我现在的问题是,您是否可以在哪里打印“字符串名称”在searchForItem方法中,不进行检查,它会为所有值打印null,甚至更好,它会打印出对象位置..我意识到了你在说什么,并修复了这个问题。这或多或少就是你要找的。是的,这几乎是一针见血。我知道应该使用数组列表,但我想使用数组来确保更好地理解它。数组的类型并将对象传递给它们。谢谢你的帮助和洞察力。