2015-06-10 2 views
0

У меня есть массив быть классифицированы по тем же значением ..Почему оператор if не работает правильно внутри цикла?

int[] clusters= 0 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 
int[] clusterDistinct = 0 1 2 

Это прекрасно, используя код ниже, но на последнем заявлении (если заявление) в течение цикла не печатает. Я не знаю, что не так с моим кодом.

private void autoClustering(int[] clusters) { 
    int[] clusterDistinct = getClusters(clusters); 

    for (int i = 0; i < clusterDistinct.length; i++) { 
     System.out.println("\nCluster " + clusterDistinct[i]); 
     for (int j = 0; j < clusters.length; j++) { 
      if (clusters[j] == clusterDistinct[i]){ 
       System.out.print(j+","); 
      } 
     } 
    } 
} 

private int[] getClusters(int[] clusters) { 
     ArrayList<Integer> klaster = new ArrayList<Integer>(); 
     for (int i = 0; i < clusters.length; i++) { 
      boolean isDistinct = false; 
      for (int j = 0; j < i; j++) { 
       if (clusters[i] == clusters[j]) { 
        isDistinct = true; 
        break; 
       } 
      } 
      if (!isDistinct) { 
       klaster.add(clusters[i]); 
      } 
     } 

     int[] clusterDistinct = new int[klaster.size()]; 
     for (int i = 0; i < clusterDistinct.length; i++) 
      clusterDistinct[i] = klaster.get(i).intValue(); 
     return clusterDistinct; 
    } 

Вот вывод .. Если инструкция не работает (не печатается) на последнем кластере. кластер 2 (последнее заявление) не печатает, он должен печатать 2,25, но почему бы не напечатать что-нибудь?

06-10 20:38:34.204: I/System.out(10634): Cluster 0: 
06-10 20:38:34.204: I/System.out(10634): 0, 
06-10 20:38:34.204: I/System.out(10634): Cluster 1: 
06-10 20:38:34.204: I/System.out(10634): 1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50, 
06-10 20:38:34.204: I/System.out(10634): Cluster 2: 
06-10 20:38:34.204: D/BRCM_EGL(10634): eglMakeCurrent(NULL) Thread: 10634 
06-10 20:38:34.204: D/BRCM_EGL(10634): eglDestroySurface() surface: 0x4d4beb30, android window 0x4d4be420, Thread: 10634 
+1

Как это не печатать? Это ... 1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23, 24,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49, 50 – Tukajo

+0

Что вы «ожидаете» под кластером 2? – Tukajo

+1

@Tukajo Он ожидает индексы значений, которые являются 2 ... ie: 2, 25 – carinlynchin

ответ

4

Распечатайте символ новой строки \n после вашей петли, чтобы очистить выходной буфер.

1

Все ваши System.out.print() s работают нормально. Только один - это System.out.println(), а другой - System.out.print().

Редактировать: Я не уверен, что понимаю, что вы здесь задаете. Ваш код слишком расплывчатый/немного, чтобы распознать проблему. Покажите нам свой метод getClusters, а также какой-нибудь другой полезный код.

+0

Он задается вопросом, почему нет выхода индексы под * «Кластер 2» *. – Tom

+0

Я понимаю, что сейчас. Этот пост был сделан под его первоначальным сообщением перед многими edi ts и много информации. @Том – Tukajo

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