Как найти и распечатать индекс максимального значения в массиве?
для моего проекта, мне нужно сделать программу которая принимает 10 чисел в качестве входных данных и отображает режим этих чисел. Программа должна использовать два массива и метод, который принимает массив чисел в качестве параметра и возвращает максимальное значение в массиве.
в принципе, что я сделал до сих пор используется второй массив, чтобы отслеживать, сколько раз появляется цифра. Глядя на исходный массив, вы увидите, что режим 4. (Число, которое появляется больше всего). Во втором массиве индекс 4 будет имейте значение 2, и, следовательно, 2 будет максимальным значением во втором массиве. Мне нужно найти это максимальное значение во втором массиве и распечатать индекс. Мой выход должен быть '4'.
моя программа хороша, пока я не попытаюсь создать "4", и я пробовал несколько разных вещей, но, похоже, не могу заставить ее работать должным образом.
Спасибо за ваше время!
public class arrayProject {
public static void main(String[] args) {
int[] arraytwo = {0, 1, 2, 3, 4, 4, 6, 7, 8, 9};
projecttwo(arraytwo);
}
public static void projecttwo(int[]array){
/*Program that takes 10 numbers as input and displays the mode of these numbers. Program should use parallel
arrays and a method that takes array of numbers as parameter and returns max value in array*/
int modetracker[] = new int[10];
int max = 0; int number = 0;
for (int i = 0; i < array.length; i++){
modetracker[array[i]] += 1; //Add one to each index of modetracker where the element of array[i] appears.
}
int index = 0;
for (int i = 1; i < modetracker.length; i++){
int newnumber = modetracker[i];
if ((newnumber > modetracker[i-1]) == true){
index = i;
}
} System.out.println(+index);
}
}
2 ответов
ваша ошибка в сравнении if ((newnumber > modetracker[i-1])
. Вы должны проверить, если newnumber
больше, чем уже найденный max. Это if ((newnumber > modetracker[maxIndex])
вы должны изменить ваши последние строки:
int maxIndex = 0;
for (int i = 1; i < modetracker.length; i++) {
int newnumber = modetracker[i];
if ((newnumber > modetracker[maxIndex])) {
maxIndex = i;
}
}
System.out.println(maxIndex);
вы можете изменить последнюю часть на:
int maxIndex = 0;
for (int i = 0; i < modetracker.length; i++) {
if (modetracker[i] > max) {
max = modetracker[i];
maxIndex = i;
}
}
System.out.println(maxIndex);