我是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;
}
}
答案 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)
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");
}