Skip to content

Commit 6b400f3

Browse files
committed
Добавлена реализация методов в SimpleMathService
1 parent d966d72 commit 6b400f3

File tree

2 files changed

+95
-15
lines changed

2 files changed

+95
-15
lines changed

java-basics-template.iml

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
3+
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
4+
<output url="file://$MODULE_DIR$/target/classes" />
5+
<output-test url="file://$MODULE_DIR$/target/test-classes" />
6+
<content url="file://$MODULE_DIR$">
7+
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
8+
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
9+
<excludeFolder url="file://$MODULE_DIR$/target" />
10+
</content>
11+
<orderEntry type="inheritedJdk" />
12+
<orderEntry type="sourceFolder" forTests="false" />
13+
<orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter:5.5.2" level="project" />
14+
<orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter-api:5.5.2" level="project" />
15+
<orderEntry type="library" scope="TEST" name="Maven: org.apiguardian:apiguardian-api:1.1.0" level="project" />
16+
<orderEntry type="library" scope="TEST" name="Maven: org.opentest4j:opentest4j:1.2.0" level="project" />
17+
<orderEntry type="library" scope="TEST" name="Maven: org.junit.platform:junit-platform-commons:1.5.2" level="project" />
18+
<orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter-params:5.5.2" level="project" />
19+
<orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter-engine:5.5.2" level="project" />
20+
<orderEntry type="library" scope="TEST" name="Maven: org.junit.platform:junit-platform-engine:1.5.2" level="project" />
21+
</component>
22+
</module>
Lines changed: 73 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,23 @@
11
package com.epam.izh.rd.online.service;
22

3+
import java.math.BigInteger;
4+
import java.util.Arrays;
5+
36
public class SimpleMathService implements MathService {
47

58
/**
69
* Метод возвращает 0, если value1 = value2.
710
* Метод возвращает -1, если value1 < value2.
811
* Метод возвращает 1, если value1 > value2.
9-
*
12+
* <p>
1013
* Например для (-1, -1) метод должен вернуть 0;
1114
* Например для (-3, -1) метод должен вернуть -1;
1215
* Например для (3, 1) метод должен вернуть 1;
1316
*/
1417
@Override
1518
public int compare(int value1, int value2) {
16-
return -2;
19+
Integer value = value1;
20+
return value.compareTo(value2);
1721
}
1822

1923
/**
@@ -22,7 +26,7 @@ public int compare(int value1, int value2) {
2226
*/
2327
@Override
2428
public int maxFrom(int value1, int value2) {
25-
return -1;
29+
return Math.max(value1, value2);
2630
}
2731

2832
/**
@@ -31,7 +35,13 @@ public int maxFrom(int value1, int value2) {
3135
*/
3236
@Override
3337
public int maxFrom(int[] values) {
34-
return -1;
38+
int max = values[0];
39+
40+
for (int value : values) {
41+
max = maxFrom(max, value);
42+
}
43+
44+
return max;
3545
}
3646

3747
/**
@@ -40,16 +50,31 @@ public int maxFrom(int[] values) {
4050
*/
4151
@Override
4252
public int sum(int[] values) {
43-
return -1;
53+
int result = 0;
54+
for (int value : values) {
55+
result += value;
56+
}
57+
return result;
4458
}
4559

4660
/**
4761
* Метод фильтрует массив, оставляя только четные числа.
4862
* Например для списка {-1, -3, 4, 8, 5, 22, 17} метод должен вернуть {4, 8, 22}
63+
*
64+
* @return
4965
*/
5066
@Override
5167
public int[] getEvenDigits(int[] values) {
52-
return new int[]{};
68+
int[] evenDigitsList = new int[0];
69+
70+
for (int value : values) {
71+
if (value % 2 == 0) {
72+
evenDigitsList = Arrays.copyOf(evenDigitsList, evenDigitsList.length + 1);
73+
evenDigitsList[evenDigitsList.length - 1] = value;
74+
}
75+
}
76+
77+
return evenDigitsList;
5378
}
5479

5580
/**
@@ -59,22 +84,36 @@ public int[] getEvenDigits(int[] values) {
5984
*/
6085
@Override
6186
public long calcFactorial(int initialVal) {
62-
return -1L;
87+
int result = 1;
88+
for (int i = 1; i <= initialVal; i++) {
89+
result *= i;
90+
}
91+
return result;
6392
}
6493

6594
/**
6695
* Метод возвращает число, которе находится на заданной позиции (счет начинается с нуля) в ряду фибоначчи.
67-
*
96+
* <p>
6897
* Ряд фибоначчи - ряд, следующие элементы которого состоят из суммы двух предыдущих.
6998
* Ряд начинается 0 и 1.
7099
* Пример 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55 ...
71-
*
100+
* <p>
72101
* Для числа 9 метод должен вернуть 34
73102
* Для числа 0 метод должен вернуть 0
74103
*/
75104
@Override
76105
public long calcFibonacci(int number) {
77-
return -1L;
106+
int result = 0;
107+
int cacheOne;
108+
int cacheTwo = 1;
109+
110+
for (int i = 0; i < number; i++) {
111+
cacheOne = cacheTwo;
112+
cacheTwo = result;
113+
result = cacheOne + cacheTwo;
114+
}
115+
116+
return result;
78117
}
79118

80119
/**
@@ -83,27 +122,46 @@ public long calcFibonacci(int number) {
83122
*/
84123
@Override
85124
public int[] sort(int[] values) {
86-
return new int[]{};
125+
int index = 0;
126+
int temp;
127+
while (index < values.length) {
128+
if (index == 0)
129+
index++;
130+
if (values[index] >= values[index - 1])
131+
index++;
132+
else {
133+
temp = values[index];
134+
values[index] = values[index - 1];
135+
values[index - 1] = temp;
136+
index--;
137+
}
138+
}
139+
return values;
87140
}
88141

89142
/**
90143
* Метод определяет, является ли заданное число простым.
91144
* Простое число - число, которое делится только на 1 и на само себя.
92-
*
145+
* <p>
93146
* Например для числа 22 вернется false, а для числа 23 true.
94147
*/
95148
@Override
96149
public boolean isPrimary(int number) {
97-
return false;
150+
BigInteger bigInteger = new BigInteger(String.valueOf(number));
151+
return bigInteger.isProbablePrime(1);
98152
}
99153

100154
/**
101155
* Метод возвращает массив, в котором элементы расположены в обратном порядке.
102-
*
156+
* <p>
103157
* Например для массива {-1, -3, 4, 8, 5, 22, -5} метод вернет {-5, 22, 5, 8, 4, -3, -1}
104158
*/
105159
@Override
106160
public int[] reverseArray(int[] values) {
107-
return new int[]{};
161+
int[] reverseArray = new int[values.length];
162+
for (int i = 0; i < values.length; i++) {
163+
reverseArray[i] = values[values.length - i - 1];
164+
}
165+
return reverseArray;
108166
}
109167
}

0 commit comments

Comments
 (0)