-1
public class Main {
    public static void main(String[] args) {
        SequenceGenerator generator = new SequenceGenerator();
        SequenceObserver sequenceObserver = new SequenceObserver();
        Sequence sequence = generator.generate(6);

        sequence.replaceNumberToSequence(1,78);
        sequence.addNumberToSequence(23);
        sequence.getNumberByIndex(5);
        sequence.insertNumberToSequence(4,36);
        sequence.removeByIndex(3);
        sequence.removeByValue(1);
    }
}

// печатает события, которые происходят в конкретном Sequence
// ДОБАВЛЕН ЭЛЕМЕНТ - значение
public class SequenceObserver {

    public void printRemoveByIndex(int index){
        System.out.println("Удален индекс " + index);
    }

    public void printAddNumber(int number){
        System.out.println("Добавлен число " + number);
    }

    public void printInsertNumber(int index, int number){
        System.out.println("Вставлено число " + number + " в индекс " + index);
    }

    public void printNumberGetByIndex(int index){
        System.out.println("Получено число по индексу " + index);
    }

    public void printReplaceNumber(int index, int number){
        System.out.println("Элемент под индексом " + index + " заменен на число " + number);
    }

    public void printRemoveByValue(int number){
        System.out.println("Удален элемент " + number);
    }
}

import java.util.Random;

// генерирует массив случайных последовательностей
public class SequenceGenerator {
    private Random random;

    public SequenceGenerator() {
        this.random = new Random();
    }

    public Sequence generate(int size){
        int[] generateArray = new int[size];
        for (int i = 0; i < generateArray.length; i++){
            generateArray[i] = random.nextInt(10);
        }
        return new Sequence(generateArray);
    }
}

import java.util.Arrays;

public class Sequence {
    //Создаем поля класса Sequence
    private SequenceObserver sequenceObserver;
    private SequenceResult sequenceResult;
    private int[] generateArray;

    public Sequence(SequenceObserver sequenceObserver) {
        this.sequenceObserver = sequenceObserver;
    }

    public Sequence(int[] generateArray){
        this.generateArray = generateArray;
    }

    // 3, 4, 5 -> removeByValue(5) -> 3, 4
    // удалить число из последовательности по значению
    public void removeByValue(int value) {
        int [] newArray = new int[generateArray.length - 1];
        int count = 0;

        for(int j = 0; j < generateArray.length; j++){
            if(generateArray[j] != value){
                newArray[count++] = generateArray[j];
            }
        }
        Arrays.copyOfRange(newArray,0,count);
        System.out.println("------------------------------");
        sequenceObserver.printRemoveByValue(value);
        sequenceResult.showResultRemoveValue(newArray);
    }

    // 3, 4, 5 -> removeByIndex(1) -> 3, 5
    // удалить число из последовательности по индексу
    public void removeByIndex(int index) {
        int [] newArray = new int[generateArray.length - 1];
        int count = 0;
        for(int j = 0; j < generateArray.length; j++){
            if(j != index){
                newArray[count++] = generateArray[j];
            }
        }
        Arrays.copyOfRange(newArray,0,count);
        System.out.println("------------------------------");
        sequenceObserver.printRemoveByIndex(index);
        sequenceResult.showResultRemoveIndex(newArray);
    }

    // добавить число в последовательность
    public void addNumberToSequence(int number) {
        int [] newArray = new int[generateArray.length + 1];
        for(int i = 0; i < newArray.length - 1; i++){
            newArray[i + 1] = generateArray[i];
        }
        newArray[0] = number;
        System.out.println("------------------------------");
        sequenceObserver.printAddNumber(number);
        sequenceResult.showResultAddNumber(newArray);
    }

    // вставить элемент со сдвигом всех остальных - insert()
    public void insertNumberToSequence(int index, int number) {
        int [] newArray = new int[generateArray.length + 1];
        for(int i = 0; i < newArray.length - 1; i++){
            if(i < index) {
                newArray[i] = generateArray[i];
            } else {
                newArray[i + 1] = generateArray[i];
            }
        }
        newArray[index] = number;
        System.out.println("------------------------------");
        sequenceObserver.printInsertNumber(index, number);
        sequenceResult.showResultInsertNumber(newArray);
    }

    // получить элемент по индексу
    public void getNumberByIndex(int index) {
        int findNumber = -1;
        for(int j = 0; j < generateArray.length; j++){
            if(j == index){
                findNumber = generateArray[j];
                break;
            }
        }
        System.out.println("------------------------------");
        sequenceObserver.printNumberGetByIndex(index);
        sequenceResult.showResultNumberByIndex(findNumber);
    }

    // вставить элемент в индекс - replace()
    public void replaceNumberToSequence(int index, int number) {
        for(int j = 0; j < generateArray.length; j++){
            if(j == index){
                generateArray[j] = number;
                break;
            }
        }
        System.out.println("------------------------------");
        sequenceObserver.printReplaceNumber(index, number);
        sequenceResult.showResultReplaceNumber(generateArray);
    }
}

import java.util.Arrays;

//Выводит результат операции
public class SequenceResult {
    public void showGenerateArray(SequenceGenerator[] array){
        System.out.println(Arrays.toString(array));
    }

    public void showResultAddNumber(int[] newArray){
        System.out.println(Arrays.toString(newArray));
    }

    public void showResultRemoveValue(int[] newArray){
        System.out.println(Arrays.toString(newArray));
    }

    public void showResultRemoveIndex(int[] newArray){
        System.out.println(Arrays.toString(newArray));
    }

    public void showResultInsertNumber(int[] newArray){
        System.out.println(Arrays.toString(newArray));
    }

    public void showResultNumberByIndex(int findNumber){
        System.out.println(findNumber);
    }

    public void showResultReplaceNumber(int[] generateArray){
        System.out.println(Arrays.toString(generateArray));
    }

}
RZF
  • 47
  • 7

1 Answers1

0

Приинициализируйте sequenceResult

public class Sequence {
    //Создаем поля класса Sequence
    private SequenceObserver sequenceObserver;
    private SequenceResult sequenceResult;
    private int[] generateArray;
public Sequence(SequenceObserver sequenceObserver) {
    this.sequenceObserver = sequenceObserver;
}

используете его на право и на лево

   sequenceResult.showResultRemoveValue(newArray);

не инициализировав его

    public class Main {
    public static void main(String[] args) {
        SequenceGenerator generator = new SequenceGenerator();
        SequenceObserver sequenceObserver = new SequenceObserver();
        Sequence sequence = generator.generate(6);
    sequence.replaceNumberToSequence(1,78);
    sequence.addNumberToSequence(23);
    sequence.getNumberByIndex(5);
    sequence.insertNumberToSequence(4,36);
    sequence.removeByIndex(3);
    sequence.removeByValue(1);
}

}

// печатает события, которые происходят в конкретном Sequence // ДОБАВЛЕН ЭЛЕМЕНТ - значение public class SequenceObserver {

public void printRemoveByIndex(int index){
    System.out.println(&quot;Удален индекс &quot; + index);
}

public void printAddNumber(int number){
    System.out.println(&quot;Добавлен число &quot; + number);
}

public void printInsertNumber(int index, int number){
    System.out.println(&quot;Вставлено число &quot; + number + &quot; в индекс &quot; + index);
}

public void printNumberGetByIndex(int index){
    System.out.println(&quot;Получено число по индексу &quot; + index);
}

public void printReplaceNumber(int index, int number){
    System.out.println(&quot;Элемент под индексом &quot; + index + &quot; заменен на число &quot; + number);
}

public void printRemoveByValue(int number){
    System.out.println(&quot;Удален элемент &quot; + number);
}

}

import java.util.Random;

// генерирует массив случайных последовательностей public class SequenceGenerator { private Random random;

public SequenceGenerator() {
    this.random = new Random();
}

public Sequence generate(int size){
    int[] generateArray = new int[size];
    for (int i = 0; i &lt; generateArray.length; i++){
        generateArray[i] = random.nextInt(10);
    }
    return new Sequence(generateArray);
}

}

import java.util.Arrays;

public class Sequence { //Создаем поля класса Sequence private SequenceObserver sequenceObserver; private SequenceResult sequenceResult; private int[] generateArray;

public Sequence(int[] generateArray, SequenceObserver sequenceObserver){
    this.generateArray = generateArray;
    this.sequenceObserver = new SequenceObserver();
    this.sequenceResult = new SequenceResult();
}

// 3, 4, 5 -&gt; removeByValue(5) -&gt; 3, 4
// удалить число из последовательности по значению
public void removeByValue(int value) {
    int [] newArray = new int[generateArray.length - 1];
    int count = 0;

    for(int j = 0; j &lt; generateArray.length; j++){
        if(generateArray[j] != value){
            newArray[count++] = generateArray[j];
        }
    }
    Arrays.copyOfRange(newArray,0,count);
    System.out.println(&quot;------------------------------&quot;);
    sequenceObserver.printRemoveByValue(value);
    sequenceResult.showResultRemoveValue(newArray);
}

// 3, 4, 5 -&gt; removeByIndex(1) -&gt; 3, 5
// удалить число из последовательности по индексу
public void removeByIndex(int index) {
    int [] newArray = new int[generateArray.length - 1];
    int count = 0;
    for(int j = 0; j &lt; generateArray.length; j++){
        if(j != index){
            newArray[count++] = generateArray[j];
        }
    }
    Arrays.copyOfRange(newArray,0,count);
    System.out.println(&quot;------------------------------&quot;);
    sequenceObserver.printRemoveByIndex(index);
    sequenceResult.showResultRemoveIndex(newArray);
}

// добавить число в последовательность
public void addNumberToSequence(int number) {
    int [] newArray = new int[generateArray.length + 1];
    for(int i = 0; i &lt; newArray.length - 1; i++){
        newArray[i + 1] = generateArray[i];
    }
    newArray[0] = number;
    System.out.println(&quot;------------------------------&quot;);
    sequenceObserver.printAddNumber(number);
    sequenceResult.showResultAddNumber(newArray);
}

// вставить элемент со сдвигом всех остальных - insert()
public void insertNumberToSequence(int index, int number) {
    int [] newArray = new int[generateArray.length + 1];
    for(int i = 0; i &lt; newArray.length - 1; i++){
        if(i &lt; index) {
            newArray[i] = generateArray[i];
        } else {
            newArray[i + 1] = generateArray[i];
        }
    }
    newArray[index] = number;
    System.out.println(&quot;------------------------------&quot;);
    sequenceObserver.printInsertNumber(index, number);
    sequenceResult.showResultInsertNumber(newArray);
}

// получить элемент по индексу
public void getNumberByIndex(int index) {
    int findNumber = -1;
    for(int j = 0; j &lt; generateArray.length; j++){
        if(j == index){
            findNumber = generateArray[j];
            break;
        }
    }
    System.out.println(&quot;------------------------------&quot;);
    sequenceObserver.printNumberGetByIndex(index);
    sequenceResult.showResultNumberByIndex(findNumber);
}

// вставить элемент в индекс - replace()
public void replaceNumberToSequence(int index, int number) {
    for(int j = 0; j &lt; generateArray.length; j++){
        if(j == index){
            generateArray[j] = number;
            break;
        }
    }
    System.out.println(&quot;------------------------------&quot;);
    sequenceObserver.printReplaceNumber(index, number);
    sequenceResult.showResultReplaceNumber(generateArray);
}

}

import java.util.Arrays;

//Выводит результат операции public class SequenceResult { public void showGenerateArray(SequenceGenerator[] array){ System.out.println(Arrays.toString(array)); }

public void showResultAddNumber(int[] newArray){
    System.out.println(Arrays.toString(newArray));
}

public void showResultRemoveValue(int[] newArray){
    System.out.println(Arrays.toString(newArray));
}

public void showResultRemoveIndex(int[] newArray){
    System.out.println(Arrays.toString(newArray));
}

public void showResultInsertNumber(int[] newArray){
    System.out.println(Arrays.toString(newArray));
}

public void showResultNumberByIndex(int findNumber){
    System.out.println(findNumber);
}

public void showResultReplaceNumber(int[] generateArray){
    System.out.println(Arrays.toString(generateArray));
}

}

либо сделайте класс SequenceResult статичным со всеми статичными методами

Aziz Umarov
  • 22,567
  • 2
  • 10
  • 33