Skip to content

Commit 9595530

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

File tree

2 files changed

+111
-15
lines changed

2 files changed

+111
-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: 89 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,28 @@
11
package com.epam.izh.rd.online.service;
22

3+
import java.util.ArrayList;
4+
import java.util.List;
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+
if (value1 == value2) {
20+
return 0;
21+
} else if (value1 < value2) {
22+
return -1;
23+
} else {
24+
return 1;
25+
}
1726
}
1827

1928
/**
@@ -22,7 +31,11 @@ public int compare(int value1, int value2) {
2231
*/
2332
@Override
2433
public int maxFrom(int value1, int value2) {
25-
return -1;
34+
if (value1 > value2) {
35+
return value1;
36+
} else {
37+
return value2;
38+
}
2639
}
2740

2841
/**
@@ -31,7 +44,13 @@ public int maxFrom(int value1, int value2) {
3144
*/
3245
@Override
3346
public int maxFrom(int[] values) {
34-
return -1;
47+
int max = values[0];
48+
for (int i = 1; i < values.length; i++) {
49+
if (max < values[i]) {
50+
max = values[i];
51+
}
52+
}
53+
return max;
3554
}
3655

3756
/**
@@ -40,7 +59,11 @@ public int maxFrom(int[] values) {
4059
*/
4160
@Override
4261
public int sum(int[] values) {
43-
return -1;
62+
int result = 0;
63+
for (int value : values) {
64+
result += value;
65+
}
66+
return result;
4467
}
4568

4669
/**
@@ -49,7 +72,19 @@ public int sum(int[] values) {
4972
*/
5073
@Override
5174
public int[] getEvenDigits(int[] values) {
52-
return new int[]{};
75+
ArrayList<Integer> evenDigitsList = new ArrayList<>();
76+
for (int value : values) {
77+
if (value % 2 == 0) {
78+
evenDigitsList.add(value);
79+
}
80+
}
81+
82+
int[] arr = new int[evenDigitsList.size()];
83+
for (int i = 0; i < evenDigitsList.size(); i++) {
84+
arr[i] = (int) evenDigitsList.get(i);
85+
}
86+
87+
return arr;
5388
}
5489

5590
/**
@@ -59,22 +94,36 @@ public int[] getEvenDigits(int[] values) {
5994
*/
6095
@Override
6196
public long calcFactorial(int initialVal) {
62-
return -1L;
97+
int result = 1;
98+
for (int i = 1; i <= initialVal; i++) {
99+
result *= i;
100+
}
101+
return result;
63102
}
64103

65104
/**
66105
* Метод возвращает число, которе находится на заданной позиции (счет начинается с нуля) в ряду фибоначчи.
67-
*
106+
* <p>
68107
* Ряд фибоначчи - ряд, следующие элементы которого состоят из суммы двух предыдущих.
69108
* Ряд начинается 0 и 1.
70109
* Пример 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55 ...
71-
*
110+
* <p>
72111
* Для числа 9 метод должен вернуть 34
73112
* Для числа 0 метод должен вернуть 0
74113
*/
75114
@Override
76115
public long calcFibonacci(int number) {
77-
return -1L;
116+
int result = 0;
117+
int cacheOne;
118+
int cacheTwo = 1;
119+
120+
for (int i = 0; i < number; i++) {
121+
cacheOne = cacheTwo;
122+
cacheTwo = result;
123+
result = cacheOne + cacheTwo;
124+
}
125+
126+
return result;
78127
}
79128

80129
/**
@@ -83,27 +132,52 @@ public long calcFibonacci(int number) {
83132
*/
84133
@Override
85134
public int[] sort(int[] values) {
86-
return new int[]{};
135+
int index = 0;
136+
int temp;
137+
while (index < values.length) {
138+
if (index == 0)
139+
index++;
140+
if (values[index] >= values[index - 1])
141+
index++;
142+
else {
143+
temp = values[index];
144+
values[index] = values[index - 1];
145+
values[index - 1] = temp;
146+
index--;
147+
}
148+
}
149+
return values;
87150
}
88151

89152
/**
90153
* Метод определяет, является ли заданное число простым.
91154
* Простое число - число, которое делится только на 1 и на само себя.
92-
*
155+
* <p>
93156
* Например для числа 22 вернется false, а для числа 23 true.
94157
*/
95158
@Override
96159
public boolean isPrimary(int number) {
97-
return false;
160+
for (int i = 2; i <= number / 2; i++) {
161+
if ((number % i) == 0) {
162+
return false;
163+
}
164+
}
165+
return true;
98166
}
99167

100168
/**
101169
* Метод возвращает массив, в котором элементы расположены в обратном порядке.
102-
*
170+
* <p>
103171
* Например для массива {-1, -3, 4, 8, 5, 22, -5} метод вернет {-5, 22, 5, 8, 4, -3, -1}
104172
*/
105173
@Override
106174
public int[] reverseArray(int[] values) {
107-
return new int[]{};
175+
int buf;
176+
for (int i = 0; i < values.length / 2; i++) {
177+
buf = values[i];
178+
values[i] = values[values.length - 1 - i];
179+
values[values.length - 1 - i] = buf;
180+
}
181+
return values;
108182
}
109183
}

0 commit comments

Comments
 (0)