Мой вопрос в том, ввожу ли я два числа maxvalue в массив, например. 100, 10, 100. Как я могу получить вывод для печати обоих индексных чисел?
Ожидаемый результат будет 100 по индексу 1 и индексу 3. в индекс добавлен 1, так как я хочу, чтобы индекс начинался с единицы, а не с нуля
какой результат вы ожидаете?
Кстати, int index=1; должен быть int index=0;, а index=i+1; действительно должен быть index=i;, поскольку вам нужно максимальное значение в массиве вместе с его индексом.
Я не совсем понимаю, что OP ожидает от этого фрагмента кода, но я думаю, что int index = 1; правильно, потому что он добавляет первое значение массива, анализируемого как параметр, поэтому он может захотеть исключить его из своего поиска
Ожидаемый результат будет 100 по индексу 1 и индексу 3.
Вы имеете в виду 0 и 2.
Хорошо, я понял. ОП хочет начать отсчет с 1, а не с 0. Вот почему он добавляет 1, он просто не упомянул об этом, потому что думал, что это говорит само за себя.
Вы правы, я хочу начать с одного ненулевого обновленного поста




Добавьте это к инициализации.
HashSet<Integer> maxIndices = new HashSet<Integer>();
Сделайте второй проход через массив пробега и любые максимальные значения add в HashSet.
Другой вариант - использовать HashMap, где первое целое число - это пробег, а второе значение - положительное целое число того, сколько было найдено.
Поскольку он выполняет только один проход, он может быть быстрее, даже если вы считаете каждый пробег, а не только тот, который в итоге окажется самым большим. Будет ли это, конечно, зависеть от данных, компилятора и условий окружающей среды во время выполнения.
В качестве возвращаемого значения вам понадобится либо пользовательский компонент Java Bean POJO, либо вы можете использовать Pair <> или Tuple <>. (См. Использование пар или двух кортежей в Java.)
Просто простая Java, использующая серию циклов для. Приведенный ниже метод вернет массив 2D int, каждая строка которого состоит из двух столбцов, самого высокого значения массива и соответствующего номера индекса массива.
public int[][] getAllMaxValues(int[] allValues) {
int maxVal = 0;
int counter = 0;
// Get the Max value in array...
for (int i = 0; i < allValues.length; i++) {
if (allValues[i] > maxVal) {
maxVal = allValues[i];
}
}
// How many of the same max values are there?
for (int i = 0; i < allValues.length; i++) {
if (allValues[i] == maxVal) {
counter++;
}
}
// Place all the max values and their respective
// indexes into a 2D int array...
int[][] result = new int[counter][2];
counter = 0;
for (int i = 0; i < allValues.length; i++) {
if (allValues[i] == maxVal) {
result[counter][0] = maxVal;
result[counter][1] = i;
counter++;
}
}
// Return the 2D Array.
return result;
}
Как вы можете использовать этот метод:
int[] allMiles = {100, 10, 100, 60, 20, 100, 34, 66, 74};
int[][] a = getAllMaxValues(allMiles);
for (int i = 0; i < a.length; i++) {
System.out.println("Array max value of " + a[i][0] +
" is located at index: " + a[i][1]);
}
В окне консоли будет отображаться:
Array max value of 100 is located at index: 0
Array max value of 100 is located at index: 2
Array max value of 100 is located at index: 5
Храните индексы в структуре данных, а не как int (который может содержать только одно значение)