2014-12-04 4 views
-1

Im пытается добавить собаку (nyHund), которая создается в другом классе, в Arraylist, который я создал с помощью конструктора в другом классе, но всякий раз, когда я пытаюсь использовать Arraylist в " register "class, im получая ошибку, что имя 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)

С наилучшими пожеланиями Oskar

ответ

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?.

+0

Спасибо! Момент стыда для меня тогда;) довольно очевидно, когда я вижу ответ;) – Oskar

+0

Бросив мне исключение NullpointerException, но теперь ошибок компиляции нет. Я предполагаю, что у меня есть еще несколько проблем, связанных с устранением неполадок xD – Oskar