#java #arrays #methods #return
#java #массивы #методы #Возврат
Вопрос:
Я делаю свою домашнюю работу, где я должен получить максимальный и минимальный индекс в массиве. Я уже сделал это, но я не могу понять, как вернуть этот индекс.
package MaxMinArrayIndex.bozhko;
public class MaxMinArrayIndex {
public static void main(String[] args) {
gettingIndex();
}
private static int gettingIndex(int[]) {
int[] myArray = {35, 2, 64, -18, 1000, 10000};
int max = myArray[0];
int indexForMax = 0;
for (int i = 0; i < myArray.length; i ) {
int score = myArray[i];
if (max < score) {
max = score;
indexForMax = i;
}
}
int min = myArray[0];
int indexForMin = 0;
for (int i = 0; i < myArray.length; i ) {
int score = myArray[i];
if (min > score) {
min = score;
indexForMin = i;
}
}
}
Комментарии:
1. Вы могли бы вернуть
Array
илиList
с двумяIntegers
. Первым всегда является min. Второе всегда является максимальным. Вы также могли бы использоватьPair
. Вы также можете создать свой собственныйPair
подобный объект, который содержит максимальное и минимальное значения.2. Вы не можете возвращать две переменные одновременно. Вы можете разделить его на две функции. Один для максимума и один для минимума. Или, если вы хотите сохранить одну функцию, вы можете создать массив размером 2 —
int[] indexes = new int[2]
и поместить в позицию 0 индекс для минимума, а в позицию 1 индекс для максимума иreturn indexes
Ответ №1:
Вы должны разделить свой код на две функции: getMinIndex()
и getMaxIndex()
.
Что-то вроде:
static int getMinIndex(int[] array) {
int min = array[0];
int indexForMin = -1;
for (int i = 0; i < array.length; i ) {
int score = array[i];
if (min > score) {
min = score;
indexForMin = i;
}
}
return indexForMin;
}
static int getMaxIndex(int[] array) {
int max = array[0];
int indexForMax = 0;
for (int i = 0; i < array.length; i ) {
int score = array[i];
if (max < score) {
max = score;
indexForMax = i;
}
}
return indexForMax;
}
Ответ №2:
Лучший подход — разделить ваши методы на два.
Фрагмент:
class Main {
public static void main(String[] args) {
int[] myArray = {35, 2, 64, -18, 1000, 10000};
int maxIndex = getMaxIndex(myArray);
System.out.println("Max Index : " maxIndex);
int minIndex = getMinIndex(myArray);
System.out.println("Min Index : " minIndex);
}
private static int getMaxIndex(int[] myArray) {
int max = myArray[0];
int indexForMax = 0;
for (int i = 0; i < myArray.length; i ) {
int score = myArray[i];
if (max < score) {
max = score;
indexForMax = i;
}
}
return indexForMax;
}
private static int getMinIndex(int[] myArray) {
int min = myArray[0];
int indexForMin = 0;
for (int i = 0; i < myArray.length; i ) {
int score = myArray[i];
if (min > score) {
min = score;
indexForMin = i;
}
}
return indexForMin;
}
}
Вывод:
Max Index : 5
Min Index : 3
Ответ №3:
Вы можете создать new array
длину 2
и сохранить индекс в этом массиве. После этого вы можете return
использовать этот массив.
Точно так же, как это:
public class MaxMinArrayIndex
{
public static void main(String[] args)
{
int[] indexes = new int[2];
indexes = gettingIndex();
System.out.printf("Min Index: %dnMax Index: %dn", indexes[0], indexes[1]);
}
private static int[] gettingIndex()
{
int[] index = new int[2];
int[] myArray = {35, 2, 64, -18, 1000, 10000};
int max = myArray[0];
int indexForMax = 0;
for (int i = 0; i < myArray.length; i ) {
if (max < myArray[i]) {
max = myArray[i];
index[0] = i;
}
}
int min = myArray[0];
int indexForMin = 0;
for (int i = 0; i < myArray.length; i ) {
if (min > myArray[i]) {
min = myArray[i];
index[1] = i;
}
}
System.out.printf("MAX: %d nMIN: %dnn", max,min);
return index;
}
}
Примечание: Ваш код не будет учитывать случай , когда в массиве есть 2 равных минимальных или максимальных числа .