Java 创建add()方法将对象插入数组中,得到的都是空值
这是一个名为Doglist的类,用于将对象添加到数组中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
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,甚至更好,它会打印出对象位置..我意识到了你在说什么,并修复了这个问题。这或多或少就是你要找的。是的,这几乎是一针见血。我知道应该使用数组列表,但我想使用数组来确保更好地理解它。数组的类型并将对象传递给它们。谢谢你的帮助和洞察力。