2013-09-04 2 views
1

Я хочу задать вопрос о Обработка. У меня есть пользовательский класс объектов, Point, и у него есть два элемента данных x и y, объявленные как float. У меня есть другой класс Recognizer. Мне нужно создать конструктор Recognizer и внутри него определить объект Point[] point0, Point[] point1 и т. Д. Динамически.Объявление переменной массива динамических массивов в обработке

Point [] point0={new Point(137,139),new Point(50,63),..., new Point(78,5)}; 
so is point1[],point2[],...,pointn[] 

Как еще добавить значения в точку 0, имеющие значения соответствующих координатах x и y.

Также обратите внимание, что размер каждого объекта point1,point2,..., pointn отличается.

Как достичь поставленной цели?

+1

Вы либо создать массив или ArrayList и заполнить его в петлю. Я предлагаю вам сделать это, когда вы читаете внешний текстовый файл, который содержит нужные вам очки. –

+0

Выберите язык, не имеет смысла давать ответы на языках, которые вы не используете. –

+0

@PeterLawrey. Я указал Обработку. Мне нужен альтернативный метод вместо добавления точек с помощью кода «Точка [] point0 = {новая точка (137,139), новая точка (50,63), ..., новая точка (78,5)}; – MELWIN

ответ

1

Как насчет использования двухмерного массива?

Point [] points0={new Point(137,139),new Point(50,63),new Point(78,5)}; 
Point [] points1={new Point(147,139),new Point(60,63),new Point(79,5)}; 
Point [] points2={new Point(157,139),new Point(70,63),new Point(80,5)}; 

void setup(){ 
    Point[][] pointLists = {points0,points1,points2}; 
    Recognizer r = new Recognizer(pointLists); 
} 

class Point{ 
    float x,y; 
    Point(float x,float y){ 
    this.x = x; 
    this.y = y; 
    } 
    String toString(){ 
    return "Point("+x+","+y+")"; 
    } 
} 
class Recognizer{ 
    Point[][] data; 
    Recognizer(Point[][] data){ 
    this.data = data; 
    for(int i = 0 ; i < data.length; i++){ 
     println("processing points list" + i); 
     for(int j = 0; j < data[i].length; j++){ 
     println("processing point["+j+"] of list " + i + " : "+data[i][j]); 
     } 
    } 
    } 
} 

и ArrayList версия:

import java.util.Arrays; 

ArrayList<Point> points0 = new ArrayList<Point>(Arrays.asList(new Point[]{new Point(137,139),new Point(50,63),new Point(78,5)})); 
ArrayList<Point> points1 = new ArrayList<Point>(Arrays.asList(new Point[]{new Point(147,139),new Point(60,63),new Point(79,5)})); 
ArrayList<Point> points2 = new ArrayList<Point>(Arrays.asList(new Point[]{new Point(157,139),new Point(70,63),new Point(80,5)})); 

void setup(){ 
    ArrayList<ArrayList<Point>> pointLists = new ArrayList<ArrayList<Point>>(); 
    pointLists.add(points0); 
    pointLists.add(points1); 
    pointLists.add(points2); 
    Recognizer r = new Recognizer(pointLists); 
} 

class Point{ 
    float x,y; 
    Point(float x,float y){ 
    this.x = x; 
    this.y = y; 
    } 
    String toString(){ 
    return "Point("+x+","+y+")"; 
    } 
} 
class Recognizer{ 
    ArrayList<ArrayList<Point>> data; 
    Recognizer(ArrayList<ArrayList<Point>> data){ 
    this.data = data; 
    for(int i = 0 ; i < data.size(); i++){ 
     println("processing points list" + i); 
     for(int j = 0; j < data.get(i).size(); j++){//write this in a nicer way, too many get calls, might want a reusable variable here 
     println("processing point["+j+"] of list " + i + " : "+data.get(i).get(j)); 
     } 
    } 
    } 
} 
+0

Как реализовать одно и то же использование списка массивов? – MELWIN

+0

@MELWIN см. Обновленный ответ, не стесняйтесь отмечать/голосовать, если это полезно –

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