ArrayList和连接不同的类

时间:2015-12-08 17:34:21

标签: java class arraylist

我是Java的新手。我正在尝试将这些类连接在一起。 Go类是主类,应该最终运行程序。根据Eclipse,该程序不包含任何错误,但在运行时,外包是空白的。

Go课程:

public class Go {           
    public static void main(String[] args) {       
        Data klasseObject = new Data();
        klasseObject.infoListe();       
    }
}

Ansat类:

import java.util.ArrayList;

public class Ansat {    
    public String navn;
    public int alder;

    public Ansat(String navn, int alder, ArrayList<Ansat> ansat){
        this.navn = navn;
        this.alder = alder;         
    }

    public int getAlder() {
        return alder;
    }

    public void setAlder(int alder) {
        this.alder = alder;
    }

    public String getNavn() {
        return navn;
    }

    public void setNavn(String navn) {
        this.navn = navn;
    }
}

Data类:

import java.util.ArrayList;

public class Data {
    private ArrayList<Ansat> ansat; 

    public void infoListe(){
        ansat = new ArrayList<Ansat>();
        ansat.add(new Ansat("Hej", 123, ansat));
    }

    public ArrayList<Ansat> getAnsat() {
        return ansat;
    }       
}

4 个答案:

答案 0 :(得分:2)

ArrayList的内容输出到控制台

    public class Go {

        public static void main(String[] args) {

        Data klasseObject = new Data();
        klasseObject.infoListe();   

        for(Ansat ansat : getAnsat()){
           system.out.println(ansat.getNavn(), ansat.getAlder());
         }
       }
   }

答案 1 :(得分:1)

我建议您只进行两次修改,以获得正确的可读输出。

将以下方法添加到Ansat

//modify the returned string however you want it to appear
public String toString() {
    return navn + " , " + alder; 
}

然后在Go class(last statement)

的main方法中添加此行
System.out.println(klasseObject.getAnsat().get(0).toString());

添加到toString()的{​​{1}}类覆盖了Ansat的toString()方法,这意味着它允许您以您希望的方式打印Ansat类的字段以及每次调用时关于Ansat对象的Ansat然后它会为你打印,如下所示:

toString()

您可以根据需要更新Hej , 123 方法进行打印。

如果您希望ArrayList中有多个元素,那么您必须进行以下更改(但是,我确实希望声明您没有以正确的方式执行此操作):

toString()

这会改变您的数据类

Data klasseObject = new Data();
klasseObject.infoListe(); 

Data klasseObject2 = new Data(); 
klasseObject.infoListe(); 

Data klasseObject3 = new Data(); 
klasseObject.infoListe(); 

for(Ansat s: klasseObject.getAnsat()) 
    System.out.println(s.toString());

如果我要检查您的代码并提出改进建议,那么我会在您的类中进行以下更改(复制/粘贴以下代码Go.java文件并运行它):

public void infoListe(){
    if(ansat != null) {
        ansat.add(new Ansat("Hej", 123, ansat));
    } else {
        ansat = new ArrayList<Ansat>();
        ansat.add(new Ansat("Hej", 123, ansat));
    }
}

答案 2 :(得分:0)

实际上你所遵循的过程是完全正确的,但你的空白是因为你不打印arraylist,因此你的空白输出。只需添加以下行,您就会看到正确的输出。

public static void main(String[] args) {

        Data klasseObject = new Data();
        klasseObject.infoListe();
        System.out.println(klasseObject.getAnsat());
    }

或在main函数中使用它就像这样...

 for (Ansat ansatLoop : klasseObject.getAnsat()) {
            System.out.println(ansatLoop.getAlder() + ":"
                    + ansatLoop.getNavn());
        }

即使迭代数组列表也会获取输出 -

/tmp

我希望这可以解决您的问题。

答案 3 :(得分:-1)

您的代码完美无缺!它没有

       System.out.println();

运行方法中的任何位置。 如果修改方法infoListe()以添加println,它将打印出一些东西

   public void infoListe(){

    ansat = new ArrayList<Ansat>();
    ansat.add(new Ansat("Hej", 123, ansat));
    System.out.println("Element Added to ArrayList"); 




}