2015-01-20 5 views
-4

Мне нужно создать массив, данные которого вводятся во время выполнения, и показывать наивысшее значение и его частоту. Также меняются частоты всех остальных значений. Мой код корректен до той части, когда я вводил значения. Помогите кому-нибудь другому?Java-кодирование для массивов

+11

Покажите нам образец кода, который поможет нам обеспечить некоторую помощь –

+1

Можете ли вы объяснить более с некоторый пример кода – jprism

+0

Почему я не могу отправить свой код? Я не понимаю, куда помещать пробелы в код:/ – Peni

ответ

0

Я считаю, что это то, о чем вы просите. Сам код довольно прямолинейный.

Вы также можете заменить самый высокий счетчик с самым высоким индексом ... но ваш выбор :)

// This is the part you already implemented... 
int[] array = {10, 2, 2, 3, 5, 6, 1, 32, 123, 2, 32, 32, 32, 1, 23, 123}; 

// Get Highest 
int highest = array[0]; 
int highestCounter = 1; 
for (int i = 1; i < array.length; i++) { 
    if (array[i] > highest) { 
     highest = array[i]; 
     highestCounter = 1; 
    } else if (array[i] == highest) { 
     highestCounter++; 
    } 
} 

System.out.println("Highest = " + highest); 
System.out.println("Highest Frequencies = " + highestCounter); 

// Get frequencies 
int[] freqArray = new int[array.length]; 
for (int i = 0; i < array.length; i++) { 
    int counter = 0; 
    for (int j = 0; j < freqArray.length; j++) { 
     if (array[i] == array[j]) { 
      counter++; 
     } 
    } 
    freqArray[i] = counter; 
} 

// Finally display result 
for (int i = 0; i < freqArray.length; i++) { 
    System.out.println(array[i] + " = " + freqArray[i]); 
} 

EDIT: Приведенный ниже код делает то же самое, но на этот раз он хранит индекс позиции наибольшего значения , Кроме того, код теперь находится в функции, которая действительно поможет вам в случае необходимости повторно использовать снова в его :)

public static void main(String... args) { 
    int[] array = {10,2,2,3,5,6,1,32,123,2,32,32,32,1,23,123}; 

    int highestIndex = getHighestIndex(array); 
    int[] frequencies = createFrequencyArray(array); 

    System.out.println("Highest = " + array[highestIndex]); 
    System.out.println("Highest value frequency " + frequencies[highestIndex]); 

    // Finally display result 
    for (int i = 0; i < frequencies.length; i++) { 
     System.out.println(array[i] + " frequency " + frequencies[i]); 
    } 

} 

public static int getHighestIndex(final int[] array) { 
    // Assume the highest value is at position 1 
    int highestIndex = 0; 

    // Ensure the array has values 
    if (array.length > 0) { 
     // No need to check 1 again, thus start from position 2 or array[1] 
     for (int i = 1; i < array.length; i++) { 
      if (array[i] > array[highestIndex]) { 
       highestIndex = i; 
      } 
     } 
    } else { 
     highestIndex = -1; 
    } 

    return highestIndex; 
} 

public static int[] createFrequencyArray(final int[] array) { 
    int[] frequencies = new int[array.length]; 
    for (int i = 0; i < array.length; i++) { 
     int counter = 0; 
     for (int j = 0; j < frequencies.length; j++) { 
      if (array[i] == array[j]) { 
       counter++; 
      } 
     } 
     frequencies[i] = counter; 
    } 

    return frequencies; 
}