如何循环浏览多个对象以找到例如一个名称



我已经创建了类"Testklasse"的4个对象。这些对象中的每一个都有一个名称(Ingrid、Ask、Tom、Dana),它们各自代表一个人。我想做的是创建不同的方法,这些方法在对象中循环,看看它们是否相互了解,是bf/gf,是否相互喜欢等等。我曾尝试创建方法blirKjentMed(trans.:getsToKnow),但它不起作用,我不知道从这里该怎么办。有什么建议吗?

import easyIO.*;
import java.io.*;
import java.util.*;
class Oblig1{
public static void main(String[] args){
Testklasse t = new Testklasse();
}
}
class Testklasse{
public Testklasse(){
Person ingrid = new Person("Ingrid", 3);
Person ask = new Person("Ask", 3);
Person tom = new Person("Tom", 3);
Person dana = new Person("Dana",3);
ingrid.blirKjentMed(ingrid);
}
}
class Person{
private String navn; 
private Person [] kjenner;
private Person [] kjennerIkke; 
private Person forelsket;
private Person sammenmed;
Person(String n, int lengde){
this.navn = n;
this.kjenner = new Person[lengde];
this.kjennerIkke = new Person[lengde];
this.forelsket = forelsket;
this.sammenmed = sammenmed;

}
public void blirKjentMed(Person ingrid){
for(int i = 0; i < ingrid.kjenner.length; i++){
if(ingrid.navn.equalsIgnoreCase("ingrid")){
continue;
} else {
kjenner[i] = ingrid;
System.out.println(ingrid.navn + kjenner[i].navn);
}
}
}

我认为这是一个家庭作业问题,因为固定大小的数组不适合表示一个人的朋友。人们可以有很多朋友,并且列表可以更改。

让我们看看Person类。正如您所注意到的,构造函数并不完全起作用,因为它为forelsketsammenmed构造了一个带有nullPerspn。线路

this.forelsket = forelsket;  \ Google: forelsket means lover in English.

不起作用。forelsket从未初始化,因此在构造函数的开头,this.forelsket就是null。由于forelsket没有作为构造函数参数出现,因此代码片段被解释为

this.forelsket = this.forelsket;

这毫无作用。更好的构造函数是:

Person(final String n,         final Person forelsket,
final Person sammenmed, final int    lengde) {
this.navn        = n;
this.forelsket   = forelsket;
this.sammenmed   = sammenmed;
this.kjenner     = new Person[lengde];
this.kjennerIkke = new Person[lengde];
}

不过一旦你了解了集合,去掉lengde并使用ArrayList会更好。

接下来,您需要编写方法来操作kjennerkjennerIkke数组(或列表)。你可以自己填写:

public void  setForelsket(final Person forelsket);
public Person getForelsket();
public void  setSammenmed(final Person sammenmed);
public Person getSammenmed();
// Return whether the addition changed anything.
public boolean addKjenner(Person kjenner);
public boolean removeKjenner(Person kjenner);
// Same for kjennerIkke.

毕竟,您可能想要创建自己的equalshashCode方法;这些是收集所必需的。

将对象放入数组或ArrayList中,然后通过它进行交互:

for(Testklasse obj : myArray) {
// do stuff
}

最新更新