我已经创建了类"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
类。正如您所注意到的,构造函数并不完全起作用,因为它为forelsket
和sammenmed
构造了一个带有null
的Perspn
。线路
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
会更好。
接下来,您需要编写方法来操作kjenner
和kjennerIkke
数组(或列表)。你可以自己填写:
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.
毕竟,您可能想要创建自己的equals
和hashCode
方法;这些是收集所必需的。
将对象放入数组或ArrayList
中,然后通过它进行交互:
for(Testklasse obj : myArray) {
// do stuff
}