我试图将在不同类中创建的狗(nyHund)添加到我使用另一个类中的构造函数创建的Arraylist中,但每当我尝试在“register”类中使用Arraylist时,即时获取无法解析arraylist名称的错误。
头等舱:
public class Hund {
private String namn;
private int ålder;
private double vikt;
private String ras;
public Hund(String hundnamn, int hundålder, String hundras, double hundvikt) {
this.namn = hundnamn;
this.ålder = hundålder;
this.ras = hundras;
this.vikt = hundvikt;
}
public String getNamn() {
return namn;
}
public int getÅlder() {
return ålder;
}
public double getSvanslängd() {
if (ras=="tax"){
return 3.7;
}else{
return ((vikt*ålder)/10);
}
}
public String toString() {
return namn + "\n" + ålder + "\n"+ras+"\n"+vikt+"\n"+getSvanslängd();
}
}
第二课
import java.util.ArrayList;
public class testning {
public static void main(String[] args) {
Hund nyHund = new Hund("Daisy", 13, "labrador", 22.3);
System.out.println(nyHund.toString());
Register.läggTillHund(nyHund);
}
}
第三课:
import java.util.ArrayList;
public class Register {
public static void läggTillHund(Hund nyHund){
hundRegister.add(nyHund);
System.out.println(nyHund);
}
private Register(){
ArrayList<Hund> hundRegister = new ArrayList<Hund>();
}
}
我遇到的问题是“hundRegister.add(nyHund)”
任何想法?或指针哪里出错了? (Java上很新)
最诚挚的问候 奥斯卡
答案 0 :(得分:3)
您创建的ArrayList
是Register
构造函数的本地代码。在类中声明它,但在构造函数之外,作为实例变量声明,因此它在整个类的范围内。
public class Register {
private ArrayList<Hund> hundRegister;
private Register(){
hundRegister = new ArrayList<Hund>();
}
}
此外,还不清楚为什么构造函数是private
。没有其他人可以访问该构造函数。我会把它public
。
此外,在getSvanslängd
中,将ras=="tax"
替换为"tax".equals(ras)
。请参阅How do I compare strings in Java?。