2016-11-27 2 views
0

Я пишу программу, которая выводит, сколько раз каждое целое число найдено в массиве целых чисел. Я выполнил это, однако, у меня есть повторяющиеся выходные строки.Подсчет целых чисел в массиве; Как удалить повторяющиеся выходные строки

Это выход:

>run: 
>Please enter integers from 0 to 100: 
1 
2 
3 
4 
4 
5 
0 
// 1 occurs 1 time // 
2 occurs 1 time // 
3 occurs 1 time // 
4 occurs 2 times // 
4 occurs 2 times // 
5 occurs 1 time // 
BUILD SUCCESSFUL (total time: 14 seconds) 

Так как вы можете видеть, «4 происходит в 2 раза» печатает дважды, так как она встречается дважды в массиве.

Мне просто нужно какое-то направление, как устранить дубликаты. Все было бы очень благодарно.

import java.util.*; 
public class WorkSpace3 { 
    public static void main(String[] args) { 
     int i = 0; 
     int count = 0; 
     int key = 0; 

     System.out.print("Please enter integers from 0 to 100: "); 
     int[] myList = new int[100]; 
     Scanner s = new Scanner(System.in); 
     for (i = 0; i < myList.length; i++) 
     { 
      myList[i] = s.nextInt(); 
      if (myList[i] == 0) 
       break; 
     } 

     while (key < myList.length && myList[key] != 0) { 
      for (i = 0; i < myList.length; i++) 
      { 

       { if (myList[i] == myList[key]) 
        { count++; } } 
      } 


      if (count == 1) 
       System.out.println(myList[key] + " occurs " + count + " time "); 
      if (count > 1) 
       System.out.println(myList[key] + " occurs " + count + " times "); 
      key++; 
      count = 0; 

     } 
    } 
} 
+0

Вы узнали о 'Map' еще? Если это так, создайте «Map », где ключ - ваш номер, а значение - это количество этого числа. – Andreas

+0

@ Andreas Я еще не изучил карту, но, к сожалению, я работаю над тем, чтобы понять это. Спасибо! – Frank

ответ

0

Простой подход, который доступен вам, - это отметить элементы, которые вы подсчитали нулями. Такой подход не является универсальным; он действителен только потому, что вы используете ноль, чтобы пометить конец входной последовательности конечным пользователем.

Чтобы использовать этот подход, вам нужно немного изменить свой код: вместо поиска нуля в цикле while настройте переменную, чтобы отметить длину последовательности. Установите его в myList.length в начале, а затем перейдите на i на перерыв. Теперь вы можете пройти список до этого максимального количества, выполнить подсчет, а затем установить нули в элементы, которые вы уже учли.

0

попробовать это с использованием Map

Map<Integer,Integer> counts=new HashMap<Integer,Integer>(); 
for (i = 0; i < myList.length; i++) { 
if(counts.contains(myList[i]){ 
counts.put(myList[i],++counts.get(myList[i]); 
}else{ 
counts.put(myList[i],1); 
}