Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Java метод который принимает три массива...

Анна Раевская(Баранова) Ученик (12), на голосовании 4 месяца назад
Добрый день! В этом коде что я делаю не так?public class MyClass12 {
public static void main(String[] args) {
class MaxSumArray {
public int[] getMaxSumArray(int[] arr1, int[] arr2, int[] arr3) {
int sum1 = 0;
int sum2 = 0;
int sum3 = 0;

for (int num : arr1) {
sum1 += num;
}
for (int num : arr2) {
sum2 += num;
}
for (int num : arr3) {
sum3 += num;
}

if (sum1 >= sum2 && sum1 >= sum3) {
return arr1;
} else if (sum2 >= sum1 && sum2 >= sum3) {
return arr2;
} else {
return arr3;
}
}

public void main(String[] args) {
int[] array1 = {1, 2, 3};
int[] array2 = {4, 5, 6, 7};
int[] array3 = {8, 9, 10, 11, 12};

int[] resultArray = getMaxSumArray(array1, array2, array3);
int sum = 0;
for (int num : resultArray) {
sum += num;
}
System.out.println("Сумма элементов самого большого массива: " + sum);
}
}

}

}




Тут нужно написать метод, который принимает три массива, а возвращает массив, сумма элементов которого самая большая. Вроде код правильный, но не выводится сумма элементов которая самая большая
Голосование за лучший ответ
Андрей Панарин Искусственный Интеллект (249180) 5 месяцев назад
Вы объявили класс MaxSumArray внутри статического метода main.
А вызов метода getMaxSumArray реализовали в нестатическом методе main внутри этого же класса. Но он никогда не будет вызван, так как его некому вызывать.

Я убрал лишний класс и вынес метод getMaxSumArray из метода main, чтобы они стояли рядом. Также я объявил его статическим, чтобы статический main мог с ним работать:
 public class Main 
{
public static void main(String[] args) {
int[] array1 = {1, 2, 3};
int[] array2 = {4, 5, 6, 7};
int[] array3 = {8, 9, 10, 11, 12};

int[] resultArray = getMaxSumArray(array1, array2, array3);
int sum = 0;
for (int num : resultArray) {
sum += num;
}
System.out.println("Сумма элементов самого большого массива: " + sum);
}

public static int[] getMaxSumArray(int[] arr1, int[] arr2, int[] arr3) {
int sum1 = 0;
int sum2 = 0;
int sum3 = 0;

for (int num : arr1) {
sum1 += num;
}
for (int num : arr2) {
sum2 += num;
}
for (int num : arr3) {
sum3 += num;
}

if (sum1 >= sum2 && sum1 >= sum3) {
return arr1;
} else if (sum2 >= sum1 && sum2 >= sum3) {
return arr2;
} else {
return arr3;
}
}
}
Но вообще программа работает неоптимально, так как для массива с самой большой суммой эта сумма считается дважды - один раз в getMaxSumArray и потом еще раз в main.
Анна Раевская(Баранова)Ученик (12) 5 месяцев назад
Спасибо!
Кинню Каору Мастер (1342) 5 месяцев назад
Проблема заключается в том, что метод `getMaxSumArray` находится внутри класса `MaxSumArray`, который в свою очередь является вложенным классом в `main` метод класса `MyClass12`. Это вызывает проблемы при попытке вызвать `getMaxSumArray` из метода `main`, так как метод `getMaxSumArray` не статический и не может быть вызван без создания экземпляра класса `MaxSumArray`.

Чтобы исправить это, вам нужно сделать класс `MaxSumArray` статическим и вызывать метод `getMaxSumArray` через этот статический класс. Вот исправленный код:

```java
public class MyClass12 {
public static void main(String[] args) {
int[] array1 = {1, 2, 3};
int[] array2 = {4, 5, 6, 7};
int[] array3 = {8, 9, 10, 11, 12};

int[] resultArray = MaxSumArray.getMaxSumArray(array1, array2, array3);

int sum = 0;
for (int num : resultArray) {
sum += num;
}
System.out.println("Сумма элементов самого большого массива: " + sum);
}

static class MaxSumArray {
public static int[] getMaxSumArray(int[] arr1, int[] arr2, int[] arr3) {
int sum1 = 0;
int sum2 = 0;
int sum3 = 0;

for (int num : arr1) {
sum1 += num;
}
for (int num : arr2) {
sum2 += num;
}
for (int num : arr3) {
sum3 += num;
}

if (sum1 >= sum2 && sum1 >= sum3) {
return arr1;
} else if (sum2 >= sum1 && sum2 >= sum3) {
return arr2;
} else {
return arr3;
}
}
}
}
```

В этом исправленном коде класс `MaxSumArray` объявлен как статический внутри `MyClass12`, и метод `getMaxSumArray` вызывается через этот статический класс. Теперь программа должна корректно выводить сумму элементов самого большого массива.
Анна Раевская(Баранова)Ученик (12) 5 месяцев назад
Спасибо
Александр Искусственный Интеллект (301529) 4 месяца назад
перестаньте засовывать классы в методы... учитесь хоть чему-нибудь с самого начала книги, а не с середины чужого непонятного кода..
Похожие вопросы