2016-02-21 3 views
0

у меня есть массив х, который содержит некоторые двойные массивы, как показано ниже:Java группировки координат на основе массива позиций

double x[] = {2, 4, 1, 1}; 

У меня также есть 3 массивов, которые определяют положение х значений в каждой группе:

int[] cluster1 = {1}; //which means that first value in x array belongs to cluster 1 
int[] cluster2 = {2}; //second value in x array belongs to cluster 2 
int[] cluster3 = {3, 4}; //third value & forth value in x array belongs to cluster 3. 

Как получить результат, например, ниже?

Cluster 1: (2) 
Cluster 2: (4) 
Cluster 3: (1), (1) 

Следует также отметить, что иногда одно и то же значение может появляться два раза в разных кластере. Спасибо за помощь!

+0

Извините, но я не могу понять ваш вопрос. Не могли бы вы попытаться перефразировать его? – user2004685

+0

Что вы пробовали? Я не вижу каких-либо усилий только для ввода кода. – 3kings

+2

Кажется, что ваши массивы 'cluster' являются в основном индексами для массивов' x [] 'и' y [] ', которые задают вопрос, почему они' Double', а не 'Integer'? Если я что-то пропустил ... –

ответ

1

Вот один из способов сделать это:

public static void main (String[] args) 
{ 
    /* Values Array */ 
    double x[] = {2, 4, 1, 1}; 
    double y[] = {1, 3, 1, 9}; 

    /* Clusters Array */ 
    Double[] cluster1 = {1.0}; 
    Double[] cluster2 = {2.0}; 
    Double[] cluster3 = {3.0, 4.0}; 

    /* Print Cluster 1 Values */ 
    System.out.print("Cluster 1:"); 
    for(int i = 0; i < cluster1.length; i++) { 
     System.out.print(" (" + x[cluster1[i].intValue() - 1] + "," + y[cluster1[i].intValue() - 1] + ")"); 
    } 

    /* Print Cluster 2 Values */ 
    System.out.print("\nCluster 2:"); 
    for(int i = 0; i < cluster2.length; i++) { 
     System.out.print(" (" + x[cluster2[i].intValue() - 1] + "," + y[cluster2[i].intValue() - 1] + ")"); 
    } 

    /* Print Cluster 3 Values */ 
    System.out.print("\nCluster 3:"); 
    for(int i = 0; i < cluster3.length; i++) { 
     System.out.print(" (" + x[cluster3[i].intValue() - 1] + "," + y[cluster3[i].intValue() - 1] + ")"); 
    } 
} 

Выход:

Cluster 1: (2.0,1.0) 
Cluster 2: (4.0,3.0) 
Cluster 3: (1.0,1.0) (1.0,9.0) 
+0

Спасибо! Я собирался облегчить понимание, но это достигает результата – Cael

+0

@Cael Your Welcome! Был бы признателен, если вы примете ответ. – user2004685

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