Нужна помощь в применении методов в массиве

Сделал массив. Сделал методы по списку заданий(вывести массив в консоль, заменить местами макс. и мин. элемент и вывести в консоль, найти сумму четных элементов и вывести в консоль, заменить нулями отриц. элем и вывести в консоль, найти разницу среднего и мин. элемента и вывести в консоль и вывести все элементы, которые встречаются больше одного раза вместе с количеством вхождений). Все методы вроде работают но как это все собрать воедино я не понимаю и прошу помочь исправить синтаксис и собрать программу "воедино")

import java.util.Arrays;

  public class Massiv {
      private final int[] mas;

    public Massiv(int size) {
            this.mas = new int[size];

            int maxNegIndex = 0;        
            int minPosIndex = 0;

            for (int i = 0; i < mas.length; i++) {

                mas[i] = (int) ((Math.random() * 21) - 10);
                System.out.println("Вывод массива" + mas);
                return mas;//? Как написать что бы выводилось корректно?                       
            }
            public int replacementOfElements() {  //? Как оформить замену элементов для корректного вывода в консоль?

            if (mas[i] < 0) { //У [i] нет связи с массивом, как сделать?
                if (mas[i] > mas[maxNegIndex]) maxNegIndex = i;
                if (mas[maxNegIndex] >= 0) maxNegIndex = i;
            } else if (mas[i] > 0) {
                if (mas[i] < mas[minPosIndex]) minPosIndex = i;
                if (mas[minPosIndex] <= 0) minPosIndex = i;

            }
        }
        //System.out.println(Arrays.toString(mas));
        int temp = mas[maxNegIndex];
        mas[maxNegIndex] = mas[minPosIndex];
        mas[minPosIndex] = temp;
       return mas; // Какая то синтаксическая ошибка(
        }
     public int sumEvenElements() {        
            return Arrays.stream(mas).filter(i->i % 2 == 0).sum();
        }

        public int[] evenElements() {
            return Arrays.stream(mas).filter(i->i % 2 == 0).toArray();
        }

     //замена на 0 отриц. элем.
        public int zeroReplacementElements () {
           int[] mas = new int [i]

                 if (mas[i] < 0) {
                    mas[i] = 0;
                    }
                // System.out.println("замена на 0 отрицательных чисел" + zeroReplacementElements ());  
    }
      //  В массиве целых чисел найти разницу между средним арифметическим и значением минимального элемента.
        public int[] arithmeticDifference() {//как присоеденить массив к [i] что бы работал цикл

         int sumMas = 0;
          for (int i = 0; i < mas.length; i++) {
          sumMas = sumMas + mas[i];
            }
          int avg = sumMas / mas[SIZE];//как заставить работать?

          int minMas = mas[MAX];// как заставить работать?
            for (int i = 0; i < mas.length; i++) {
                if (mas[i] < mas[MAX] {
                    minMas = mas[i];*/
                } 
                public int[] arithmeticDifference() {// как это собрать в единый метод вычисления разницы?

          int result_Task4 = avg - minMas; 
                    return ;
          //System.out.println("Разница между средним арифметическим и минимальным элемнентом:" + result_Task4);

        //В массиве элементов вывести значения которые встречаются больше одного раза вместе с количеством вхождений
         public int[] arrayOfIntegers() {

        int[][] mas = new int[SIZE + 1][2];// как это собрать в единый метод и как к нему обратить в мейне?
          for (int i = 0; i < arr.length; i++) {
          arr[i][0] = i - 10;
          } 

            for (int i = 0; i < arr.length; i++) {
             for (int j = 0; j < arr.length; j++) {
                 if (arr[i][0] == mas[j])
          arr[i][1]++;
          }
     } 

            for (int i = 0; i < arr.length; i++) {
                if (arr[i][1] > 1)
                    return;
          //System.out.println("Число " + arr[i][0] + " встречается " + arr[i][1] + " раз");
          } 
        public static void main(String[] args) {

                 Massiv massiv = new Massiv(20);
                 System.out.println(Arrays.toString(massiv.generate()));

                 int[] evenElements = massiv.evenElements();
                 System.out.println("Четные элементы: " + Arrays.toString(evenElements));
                 System.out.println("Всего четных элементов: " + evenElements.length);
                 System.out.println("Их сумма равна: " + massiv.sumEvenElements());
                 System.out.println("Замена четных чисел на ноль" + );
                System.out.println("Подсчет разницы между средним и минимальным значением" + );
                System.out.println("В массиве элементов вывести значения которые встречаются больше одного раза вместе с количеством вхождений." +);
             }

         }

Ответы (1 шт):

Автор решения: Дмитрий

Я не знаю, откуда у вас взялась уверенность, что этот код должен работать, учитывая в каком он состоянии, но попытка хорошая)) попробуйте так:

import java.util.Arrays;
import java.util.Map;
import java.util.Random;
import java.util.function.Function;
import java.util.stream.Collectors;

public class Massiv {

    private final int[] mas;

    public Massiv(int [] mas) {
        this.mas = mas;
    }

    //вывод массива в консоль
    @Override
    public String toString() {
        return Arrays.toString(mas);
    }

    public Massiv replaceMinMaxElement() {

        int min=0,max=0;

        for (int i = 0; i < mas.length; i++) {            
            if (mas[i]<mas[min]) min = i;
            if (mas[i]>mas[max]) max = i;
        }

        int tmp = mas[min];
        mas[min] = mas[max];
        mas[max] = tmp;
        return this;
    }

    //сумма четных элементов
    public int sumEvenElements() {
        return Arrays.stream(mas).filter(i -> i % 2 == 0).sum();
    }

    //выбор четных элементов
    public int[] evenElements() {
        return Arrays.stream(mas).filter(i -> i % 2 == 0).toArray();
    }

    //замена на 0 отриц. элем.
    public Massiv zeroReplacementElements() {
        for (int i = 0; i < mas.length; i++) {
            if (mas[i] < 0) mas[i] = 0;
        }
        return this;
    }

    //В массиве целых чисел найти разницу между средним арифметическим и значением минимального элемента.
    public double arithmeticDifference() {        
        double average = Arrays.stream(mas).average().getAsDouble();
        int min = Arrays.stream(mas).min().getAsInt();
        return average - min;
    }

    //В массиве элементов вывести значения которые встречаются больше одного раза вместе с количеством вхождений
    public Map<Integer, Long> arrayOfIntegers() {
        return Arrays.stream(mas).boxed()
                .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
    }

    public static void main(String[] args) {

        int arraySize = 10;        
        int [] mas = new int[arraySize];
        Random r = new Random();
        for (int i = 0; i < arraySize; i++) {
            mas[i] = r.nextInt(100);
            System.out.println(mas[i]);
        }

        System.out.println("*************************************************");

        Massiv massiv = new Massiv(mas);


        int[] evenElements = massiv.evenElements();

        System.out.println("Четные элементы : " + Arrays.toString(evenElements));
        System.out.println("Всего четных элементов : " + evenElements.length);
        System.out.println("Их сумма равна : " + massiv.sumEvenElements());

        System.out.print("Замена отрицательных чисел на ноль : " + massiv.replaceMinMaxElement());

        System.out.println("Подсчет разницы между средним и минимальным значением : " + massiv.arithmeticDifference());
        System.out.println("В массиве элементов вывести значения которые встречаются больше одного раза вместе с количеством вхождений : " + massiv.arrayOfIntegers());
    }

}
→ Ссылка