Мне нужно создать массив, данные которого вводятся во время выполнения, и показывать наивысшее значение и его частоту. Также меняются частоты всех остальных значений. Мой код корректен до той части, когда я вводил значения. Помогите кому-нибудь другому?Java-кодирование для массивов
-4
A
ответ
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;
}
Покажите нам образец кода, который поможет нам обеспечить некоторую помощь –
Можете ли вы объяснить более с некоторый пример кода – jprism
Почему я не могу отправить свой код? Я не понимаю, куда помещать пробелы в код:/ – Peni