2015-05-29 5 views
-1

У меня есть ArrayList, где она имеет определенное количество элементов, каждый из которых состоит из двух значений (день, центов) company.getAnnouncements().get(0)получить конкретное значение из ArrayList элемента Java

Приведенный выше код будет извлекать первый элемент в ArrayList , но мне нужен только компонент cents этого элемента. Как бы вы это сделали?

public class Announcement implements Event { 
private int day ; 
private String statement; 
    public Announcement(int day, String statement) { 
      this.day = day; 
      this.statement = statement; 
    } 

    @Override 
    public String printEvent() { 

     return statement; 
    } 

    public int getDay() { 
     // TODO Auto-generated method stub 
     return day; 
    } 


} 

Это класс Объявление у меня есть и дивидендная расширяет его

public class Dividend extends Announcement { 

    private int cents; 

     public Dividend(int day, int cents) { 
      super(day,""); 
      this.cents=cents;  

     } 


     public double getCents() { 
     return (double) (cents)/100; 
     } 

     public void setCents(int cents) { 
      this.cents = cents; 
     } 


     @Override 
     public String printEvent() { 
      // TODO Auto-generated method stub 
      return "Dividend of " + getCents() + " per share" ; 
     } 

    }` 

И Компания Класс

public class Company implements Event { 

private String name; 
private String code; 
private int currShares; 
private double previousPrice; 
private ArrayList <Dividend> dividends; 
private ArrayList <Announcement> announcements; 
private ArrayList <Trade> trades; 

public Company(String code, String name, int currShares, 
     double previousPrice) { 
    this.name = name; 
    this.code = code; 
    this.setCurrShares(currShares); 
    this.previousPrice = previousPrice; 
    this.trades = new ArrayList <Trade>(); 
    this.dividends = new ArrayList <Dividend>(); 
    this.announcements = new ArrayList <Announcement>(); 
} 

public void addDividend(int day , int cents){ 
    dividends.add(new Dividend(day, cents)); 

} 

public void addAnnouncement(int day , String statement){ 
    announcements.add(new Announcement(day, statement)); 

} 

public void addTrade(int day , int sharesTraded , double pricePerShare){ 
    trades.add(new Trade(day, sharesTraded, pricePerShare)); 

} 


public String printEvent() { 

    return "Printed!!"; 
} 

public String getCode() { 
    return code; 
} 

public ArrayList<Dividend> getDividends() { 
    return dividends; 
} 

public void setDividends(ArrayList<Dividend> dividends) { 
    this.dividends = dividends; 
} 

public ArrayList<Announcement> getAnnouncements() { 
    return announcements; 
} 

public void setAnnouncements(ArrayList<Announcement> announcements) { 
    this.announcements = announcements; 
} 

public ArrayList<Trade> getTrades() { 
    return trades; 
} 

public void setTrades(ArrayList<Trade> trades) { 
    this.trades = trades; 
} 

public String getName() { 
    return name; 
} 


public void addAnnouncement(int day, int cent) { 
    // TODO Auto-generated method stub 
    announcements.add(new Dividend(day,cent)); 
} 

public int getCurrShares() { 
    return currShares; 
} 

public void setCurrShares(int currShares) { 
    this.currShares = currShares; 
} 


} 
+2

Основываясь на том, что вы предоставили, я сделал бы это с помощью сложного набора отражения и вероятностного соответствия имени поля. Но было бы проще, если бы вы могли показать нам, что именно вы выбрали из списка? –

+0

Есть ли способ, который я могу добавить больше информации для моего вопроса ?? – MrKeyboard

+0

Мне нужно получить информацию о классе «Дивиденд», который расширяет класс «Анонс». Класс Dividend имеет день и центы в качестве атрибутов и расширяет класс Announcement, который имеет день и оператор как атрибуты. – MrKeyboard

ответ

4

Just доступ к нему, как и при любом другом добытчике (это предполагает, Announcement имеет метод getCents):

int cents = company.getAnnouncements().get(0).getCents(); 

Или, если вы не имеете getCents метод (который, кстати, вы должны!):

int cents = company.getAnnouncements().get(0).cents; 

Я предполагал int как тип cents, вы должны предоставить нам с какими Announcement выглядит как бы точно сказать, как вы к нему обращались.

Update

После правки, кажется, если вы не хотите getAnnouncements, а скорее getDividends. Это выглядит примерно так:

double cents = company.getDividends().get(0).getCents(); 
+0

Thankyou, я добавил больше кода, если вам нравится смотреть. – MrKeyboard

+0

@ 30088121 Кажется, что 'компания' не имеет метода getAnnouncements. И даже если бы это было так, почему бы вам не взять дивиденды вместо объявлений от компании, если это похоже на то, что вы хотели? – germi

+0

Hey @germi Извините, я не добавил весь класс компании, потому что его для задания, и мой учитель действительно не оценил бы меня, имея всю работу там:/ – MrKeyboard

0

Я верю company.getAnnouncements() возвращает вас в list, и company.getAnnouncements().get(0) вы получите объект bean.

Там должны getCents() или что-то в bean классе, и вы окончательный код должен выглядеть company.getAnnouncements().get(0).getCents()

или если cents является атрибутом в классе компонента, то вы можете также сделать company.getAnnouncements().get(0).cent

+0

Спасибо, я добавил еще код, если вам нравится смотреть , – MrKeyboard

-1

Чтобы узнать, как получить к нему доступ, вам нужно знать тип объекта значения.

Если другой его ArrayList вы могли бы сделать:.

ИНТ центов = company.getAnnouncements() получим (0) .get (1);

+0

Спасибо, я добавил больше кода, если вам нравится смотреть. – MrKeyboard

Смежные вопросы