diff --git a/java-basics-template.iml b/java-basics-template.iml new file mode 100644 index 00000000..038395da --- /dev/null +++ b/java-basics-template.iml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/epam/izh/rd/online/service/SimpleMathService.java b/src/main/java/com/epam/izh/rd/online/service/SimpleMathService.java index 29215765..1ee3955c 100644 --- a/src/main/java/com/epam/izh/rd/online/service/SimpleMathService.java +++ b/src/main/java/com/epam/izh/rd/online/service/SimpleMathService.java @@ -1,109 +1,162 @@ -package com.epam.izh.rd.online.service; - -public class SimpleMathService implements MathService { - - /** - * Метод возвращает 0, если value1 = value2. - * Метод возвращает -1, если value1 < value2. - * Метод возвращает 1, если value1 > value2. - * - * Например для (-1, -1) метод должен вернуть 0; - * Например для (-3, -1) метод должен вернуть -1; - * Например для (3, 1) метод должен вернуть 1; - */ - @Override - public int compare(int value1, int value2) { - return -2; - } - - /** - * Метод возвращает максимальное число из пары. - * Например для списка (-1, 2) метод должен вернуть 2 - */ - @Override - public int maxFrom(int value1, int value2) { - return -1; - } - - /** - * Метод возвращает максимальное число из переданного массива. - * Например для списка {-1, -3, 4, 8, 5, 22, -5} метод должен вернуть 22 - */ - @Override - public int maxFrom(int[] values) { - return -1; - } - - /** - * Метод возвращает сумму чисел массива. - * Например для списка {-1, -3, 4, 8, 5, 22, -5} метод должен вернуть 30 - */ - @Override - public int sum(int[] values) { - return -1; - } - - /** - * Метод фильтрует массив, оставляя только четные числа. - * Например для списка {-1, -3, 4, 8, 5, 22, 17} метод должен вернуть {4, 8, 22} - */ - @Override - public int[] getEvenDigits(int[] values) { - return new int[]{}; - } - - /** - * Метод считает факториал из заданного числа. - * Например для числа 5 метод должен вернуть 120. - * Факториал 0 должен быть равен 1. - */ - @Override - public long calcFactorial(int initialVal) { - return -1L; - } - - /** - * Метод возвращает число, которе находится на заданной позиции (счет начинается с нуля) в ряду фибоначчи. - * - * Ряд фибоначчи - ряд, следующие элементы которого состоят из суммы двух предыдущих. - * Ряд начинается 0 и 1. - * Пример 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55 ... - * - * Для числа 9 метод должен вернуть 34 - * Для числа 0 метод должен вернуть 0 - */ - @Override - public long calcFibonacci(int number) { - return -1L; - } - - /** - * Метод возвращает отсортированный по возрастанию массив. - * Например для массива {-1, -3, 4, 8, 5, 22, -5} метод должен вернуть {-5, -3, -1, 4, 5, 8, 22} - */ - @Override - public int[] sort(int[] values) { - return new int[]{}; - } - - /** - * Метод определяет, является ли заданное число простым. - * Простое число - число, которое делится только на 1 и на само себя. - * - * Например для числа 22 вернется false, а для числа 23 true. - */ - @Override - public boolean isPrimary(int number) { - return false; - } - - /** - * Метод возвращает массив, в котором элементы расположены в обратном порядке. - * - * Например для массива {-1, -3, 4, 8, 5, 22, -5} метод вернет {-5, 22, 5, 8, 4, -3, -1} - */ - @Override - public int[] reverseArray(int[] values) { - return new int[]{}; - } -} +package com.epam.izh.rd.online.service; + +import java.util.Arrays; + +public class SimpleMathService implements MathService { + + /** + * Метод возвращает 0, если value1 = value2. + * Метод возвращает -1, если value1 < value2. + * Метод возвращает 1, если value1 > value2. + * + * Например для (-1, -1) метод должен вернуть 0; + * Например для (-3, -1) метод должен вернуть -1; + * Например для (3, 1) метод должен вернуть 1; + */ + @Override + public int compare(int value1, int value2) { + if (value1 > value2) { + return 1; + } else if (value1 == value2) { + return 0; + } else { + return -1; + } + } + + /** + * Метод возвращает максимальное число из пары. + * Например для списка (-1, 2) метод должен вернуть 2 + */ + @Override + public int maxFrom(int value1, int value2) { + + return Math.max(value1, value2); + } + + /** + * Метод возвращает максимальное число из переданного массива. + * Например для списка {-1, -3, 4, 8, 5, 22, -5} метод должен вернуть 22 + */ + @Override + public int maxFrom(int[] values) { + int i; + int max = values[0]; + for (i = 1; i < values.length; i++) { + if (values[i] > max) { + max = values[i]; + } + } + return max; + } + + /** + * Метод возвращает сумму чисел массива. + * Например для списка {-1, -3, 4, 8, 5, 22, -5} метод должен вернуть 30 + */ + @Override + public int sum(int[] values) { + int i; + int sum = 0; + for (i = 0; i < values.length; i++) { + sum += values[i]; + } + return sum; + } + + /** + * Метод фильтрует массив, оставляя только четные числа. + * Например для списка {-1, -3, 4, 8, 5, 22, 17} метод должен вернуть {4, 8, 22} + */ + @Override + public int[] getEvenDigits(int[] values) { + values = Arrays.stream(values).filter(x -> x % 2 == 0).toArray(); + return values; + } + + /** + * Метод считает факториал из заданного числа. + * Например для числа 5 метод должен вернуть 120. + * Факториал 0 должен быть равен 1. + */ + @Override + public long calcFactorial(int initialVal) { + int result = 1; + for (int i = 1; i <= initialVal; i++) { + result *= i; + } + return result; + } + + /** + * Метод возвращает число, которе находится на заданной позиции (счет начинается с нуля) в ряду фибоначчи. + * + * Ряд фибоначчи - ряд, следующие элементы которого состоят из суммы двух предыдущих. + * Ряд начинается 0 и 1. + * Пример 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55 ... + * + * Для числа 9 метод должен вернуть 34 + * Для числа 0 метод должен вернуть 0 + */ + @Override + public long calcFibonacci(int number) { + if (number == 1 || number == 2) { + return 1; + } + + int n0 = 1; + int n1 = 1; + int n2 = 0; + + for(int i = 3; i <= number; i++){ + n2=n0+n1; + n0=n1; + n1=n2; + } + return n2; + } + + /** + * Метод возвращает отсортированный по возрастанию массив. + * Например для массива {-1, -3, 4, 8, 5, 22, -5} метод должен вернуть {-5, -3, -1, 4, 5, 8, 22} + */ + @Override + public int[] sort(int[] values) { + Arrays.sort(values); + return values; + } + + /** + * Метод определяет, является ли заданное число простым. + * Простое число - число, которое делится только на 1 и на само себя. + * + * Например для числа 22 вернется false, а для числа 23 true. + */ + @Override + public boolean isPrimary(int number) { + if (number == 0 || number == 1){ + return false; + } + for (int i = 2; i < number; i++) { + if (number % i == 0) { + return false; + } + } + return true; + } + + /** + * Метод возвращает массив, в котором элементы расположены в обратном порядке. + * + * Например для массива {-1, -3, 4, 8, 5, 22, -5} метод вернет {-5, 22, 5, 8, 4, -3, -1} + */ + @Override + public int[] reverseArray(int[] values) { + for (int i = 0; i < values.length / 2; i++) { + int temp = values[i]; + values[i] = values[values.length - i - 1]; + values[values.length - i - 1] = temp; + } + return values; + } +}