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));
}
}
- 47
- 7
-
3Возможный дубликат вопроса: Что такое Null Pointer Exception и как его исправить? – Алексей Шиманский Mar 03 '21 at 13:10
1 Answers
Приинициализируйте 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("Удален индекс " + 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(int[] generateArray, SequenceObserver sequenceObserver){
this.generateArray = generateArray;
this.sequenceObserver = new SequenceObserver();
this.sequenceResult = new SequenceResult();
}
// 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));
}
}
либо сделайте класс SequenceResult статичным со всеми статичными методами
- 22,567
- 2
- 10
- 33
-
-
-
так не работает, дебаг показывает на sequenceObserver происходит NullPointerException – RZF Mar 03 '21 at 13:32
-