你如何遍历几个对象来查找,例如,一个名字?

时间:2014-01-17 16:56:10

标签: java loops object methods

我创建了“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);
                }

            }

        }

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

让我们看一下Person课程。正如您将注意到的那样,构造函数不能正常工作,因为它为Perspnnull构建forelsket sammenmed。这条线

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

不起作用。 forelsket永远不会被初始化,因此在构造函数的开头,this.forelsketnull。由于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方法;这些是收藏所必需的。