2015-10-05 2 views
0

Я пытаюсь получить «точку» от arraylist, который находится в другом классе. Существует производитель, который отправляет «заявку» или пункт. Но сначала нужно понять, прежде чем он сможет его отправить. Логика initalBid() заключается в том, чтобы получить вещь в слоте 0, когда рынок (другой класс) вызывает initalBid(). Существует также класс productionCurve, который создает персональную кривую производителей через класс AbstractCurve, который создает общую кривую. Общая идея: как получить элемент из массива в моем initalBid-методе.Как получить элемент в arraylist из другого класса

Производитель initalBid():

public Point initalBid() 
{ 
    return producer.get(0); 
} 

Производитель Curve:

public class ProducerCurve extends AbstractCurve 
{ 

public ProducerCurve() 
    { 
     super(10, -1, 0, 1); 
    } 
public ProducerCurve(int np, double m, double b, int dx) 
{ 
    super(np,m,b,dx); 
} 

} 

Аннотация Curve:

import java.util.ArrayList; 
public abstract class AbstractCurve { 
ArrayList<Point> myCurve = new ArrayList<Point>(); 

public AbstractCurve(int np, double m, double b, int dx) 
    { 

    for(int i=0; i<np; i++) 
    { 
     int x = i*dx; 
     double y = m*x+b; 
     if(y<0) throw new IllegalArgumentException(); 
     ArrayList<Point> myCurve = new ArrayList<Point>(); 
     myCurve.add(new Point(x, y)); 
    } 
} 

public boolean contains(Point p) 
    { 
     for(int index=0; index< myCurve.size(); index++) 
     { 
      myCurve.equals(index); 
      { 
       return true; 
      } 
     } 
     return false; 
    } 
} 
+0

не могли бы вы сократить свой код и быть конкретным? –

+1

В этом посте я не вижу вопроса. Пожалуйста, уточните, каков ваш вопрос. – teacurran

ответ

0

Так как вам нужно, чтобы получить элементы из ArrayList, и ProducerCurve более или менее просто оберткой для инициализации, что ArrayList: Я бы, наверное, просто продлить ArrayList:

import java.util.ArrayList; 

public abstract class AbstractCurve extends ArrayList<Point> { 

    public AbstractCurve(int np, double m, double b, int dx) { 
     for (int i = 0; i < np; i++) { 
      int x = i * dx; 
      double y = m * x + b; 
      if (y < 0) { 
       throw new IllegalArgumentException(); 
      } 
      this.add(new Point(x, y)); 
     } 
    } 
} 

Тогда вы можете просто использовать методы на ArrayList:

public Point initalBid() { 
    if (producer.size() > 0) { 
     return producer.get(0); 
    } 
    return null; 
} 

Для зацикливание над вашими точками можно использовать коллекции Api:

public void loopOverBids() { 
    for (Point thisPoint : producer) { 
     System.out.println(thisPoint); 
    } 
} 
+0

Это то, что я пытаюсь сделать, но не называя сам «индекс». Это возможно? – retrogirl19

+0

поэтому myCurve - это массив точек. Вы хотите получить конкретный момент? Вы хотите получить первое очко? – teacurran

+0

Я хочу, чтобы каждый раз, чтобы получить первое очко для initalBid(), появляется responseToBid(), который будет проходить через цикл for. Каждый раз, когда он называется, он получает следующую точку. – retrogirl19

0

рассмотреть возможность сделать ArrayList защищены. https://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html

В качестве альтернативы вы можете сделать все абстрактные методы в AbstractCurve и иметь ArrayList в базовом классе. В абстрактном классе вы также можете определить get, чтобы получить элемент (обертывание вокруг ArrayList's get).

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