Нужна помощь в применении методов в массиве
Сделал массив. Сделал методы по списку заданий(вывести массив в консоль, заменить местами макс. и мин. элемент и вывести в консоль, найти сумму четных элементов и вывести в консоль, заменить нулями отриц. элем и вывести в консоль, найти разницу среднего и мин. элемента и вывести в консоль и вывести все элементы, которые встречаются больше одного раза вместе с количеством вхождений). Все методы вроде работают но как это все собрать воедино я не понимаю и прошу помочь исправить синтаксис и собрать программу "воедино")
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());
}
}