Skip to content

Commit 518eee3

Browse files
committed
Changes according to second review
1 parent 16c19d3 commit 518eee3

File tree

7 files changed

+46
-42
lines changed

7 files changed

+46
-42
lines changed

app/src/main/java/hexlet/code/App.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public static void main(String[] args) {
4242
PrimeGame.primeGame();
4343
break;
4444
default:
45-
System.out.println("Unexpected input");
45+
System.out.println("Unknown user choice " + gameChoice);
4646
}
4747
}
4848
}

app/src/main/java/hexlet/code/Engine.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import java.util.Scanner;
44

55
public class Engine {
6-
static final int NUMBER_OF_GAMES = 3;
6+
public static final int NUMBER_OF_GAMES = 3;
77

88
public static void gameRun(String gameRules, String[][] questionsAndAnswers) {
99
Scanner input = new Scanner(System.in);
@@ -14,9 +14,9 @@ public static void gameRun(String gameRules, String[][] questionsAndAnswers) {
1414
String userName = input.next();
1515
System.out.println("Hello, " + userName + "!");
1616
System.out.println(gameRules);
17-
for (int i = 0; i < NUMBER_OF_GAMES; i++) {
18-
String question = questionsAndAnswers[i][0];
19-
String answer = questionsAndAnswers[i][1];
17+
for (String [] questionAndAnswer : questionsAndAnswers) {
18+
String question = questionAndAnswer[0];
19+
String answer = questionAndAnswer[1];
2020
System.out.println(question);
2121
playerAnswer = input.next();
2222
if (answer.equals(playerAnswer)) {

app/src/main/java/hexlet/code/games/CalcGame.java

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,26 +5,28 @@
55
public class CalcGame {
66
static final int MAX_NUMBER_VALUE = 100;
77
static final int MAX_INDEX_VALUE = 3;
8-
static final int NUMBER_OF_GAMES = 3;
98
static final int COLUMN_INDEX = 3;
109
static final int ROW_INDEX = 2;
1110

11+
public static int getCalculation (int firstNumber, int secondNumber, char operator) {
12+
return switch (operator) {
13+
case '+' -> firstNumber + secondNumber;
14+
case '-' -> firstNumber - secondNumber;
15+
case '*' -> firstNumber * secondNumber;
16+
default -> throw new RuntimeException("Unknown input: " + operator);
17+
};
18+
}
19+
1220
public static void calcGame() {
1321
String gameRules = "What is the result of the expression?";
1422
String[][] questionsAndAnswers = new String[COLUMN_INDEX][ROW_INDEX];
15-
for (int i = 0; i < NUMBER_OF_GAMES; i++) {
23+
for (int i = 0; i < Engine.NUMBER_OF_GAMES; i++) {
1624
int firstNumber = (int) (Math.random() * MAX_NUMBER_VALUE);
1725
int secondNumber = (int) (Math.random() * MAX_NUMBER_VALUE);
1826
int operatorIndex = (int) (Math.random() * MAX_INDEX_VALUE);
1927
char[] operator = {'+', '-', '*'};
20-
int solution = 0;
28+
int solution = getCalculation(firstNumber, secondNumber, operator[operatorIndex]);
2129
questionsAndAnswers[i][0] = "Question: " + firstNumber + " " + operator[operatorIndex] + " " + secondNumber;
22-
solution = switch (operator[operatorIndex]) {
23-
case '+' -> firstNumber + secondNumber;
24-
case '-' -> firstNumber - secondNumber;
25-
case '*' -> firstNumber * secondNumber;
26-
default -> solution;
27-
};
2830
questionsAndAnswers[i][1] = Integer.toString(solution);
2931
}
3032
Engine.gameRun(gameRules, questionsAndAnswers);

app/src/main/java/hexlet/code/games/EvenGame.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,13 @@
44

55
public class EvenGame {
66
static final int MAX_NUMBER_VALUE = 100;
7-
static final int NUMBER_OF_GAMES = 3;
87
static final int COLUMN_INDEX = 3;
98
static final int ROW_INDEX = 2;
109

1110
public static void evenGame() {
1211
String gameRules = "Answer 'yes' if the number is even, otherwise answer 'no'.";
1312
String[][] questionsAndAnswers = new String[COLUMN_INDEX][ROW_INDEX];
14-
for (int i = 0; i < NUMBER_OF_GAMES; i++) {
13+
for (int i = 0; i < Engine.NUMBER_OF_GAMES; i++) {
1514
int guessedNumber = (int) (Math.random() * MAX_NUMBER_VALUE);
1615
String solution = guessedNumber % 2 == 0 ? "yes" : "no";
1716
questionsAndAnswers[i][0] = "Question: " + guessedNumber;

app/src/main/java/hexlet/code/games/GCDGame.java

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,25 +4,26 @@
44

55
public class GCDGame {
66
static final int MAX_NUMBER_VALUE = 100;
7-
static final int NUMBER_OF_GAMES = 3;
87
static final int COLUMN_INDEX = 3;
98
static final int ROW_INDEX = 2;
109

10+
public static int getGCD(int firstNumber, int secondNumber) {
11+
while (secondNumber != 0) {
12+
int swapNumber;
13+
swapNumber = firstNumber % secondNumber;
14+
firstNumber = secondNumber;
15+
secondNumber = swapNumber;
16+
}
17+
return firstNumber;
18+
}
1119
public static void gcdGame() {
1220
String gameRules = "Find the greatest common divisor of given numbers.";
1321
String[][] questionsAndAnswers = new String[COLUMN_INDEX][ROW_INDEX];
14-
for (int i = 0; i < NUMBER_OF_GAMES; i++) {
22+
for (int i = 0; i < Engine.NUMBER_OF_GAMES; i++) {
1523
int firstNumber = (int) (Math.random() * MAX_NUMBER_VALUE);
1624
int secondNumber = (int) (Math.random() * MAX_NUMBER_VALUE);
17-
int solution;
25+
int solution = getGCD(firstNumber, secondNumber);
1826
questionsAndAnswers[i][0] = "Question: " + firstNumber + " " + secondNumber;
19-
while (secondNumber != 0) {
20-
int swapNumber;
21-
swapNumber = firstNumber % secondNumber;
22-
firstNumber = secondNumber;
23-
secondNumber = swapNumber;
24-
}
25-
solution = firstNumber;
2627
questionsAndAnswers[i][1] = Integer.toString(solution);
2728
}
2829
Engine.gameRun(gameRules, questionsAndAnswers);

app/src/main/java/hexlet/code/games/PrimeGame.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,11 @@
44

55
public class PrimeGame {
66
static final int MAX_NUMBER_VALUE = 100;
7-
static final int MIN_INDEX_TO_START = 3;
8-
static final int NUMBER_OF_GAMES = 3;
97
static final int COLUMN_INDEX = 3;
108
static final int ROW_INDEX = 2;
119

1210
public static boolean isPrime(int number) {
11+
int minIndex = 3;
1312
if (number < 2) {
1413
return false;
1514
}
@@ -19,7 +18,7 @@ public static boolean isPrime(int number) {
1918
if (number % 2 == 0) {
2019
return false;
2120
}
22-
for (int j = MIN_INDEX_TO_START; j * j <= number; j += 2) {
21+
for (int j = minIndex; j * j <= number; j += 2) {
2322
if (number % j == 0) {
2423
return false;
2524
}
@@ -30,7 +29,7 @@ public static boolean isPrime(int number) {
3029
public static void primeGame() {
3130
String gameRules = "Answer 'yes' if given number is prime. Otherwise answer 'no'.";
3231
String[][] questionsAndAnswers = new String[COLUMN_INDEX][ROW_INDEX];
33-
for (int i = 0; i < NUMBER_OF_GAMES; i++) {
32+
for (int i = 0; i < Engine.NUMBER_OF_GAMES; i++) {
3433
int guessedNumber = (int) (Math.random() * MAX_NUMBER_VALUE);
3534
questionsAndAnswers[i][0] = "Question: " + guessedNumber;
3635
questionsAndAnswers[i][1] = isPrime(guessedNumber) ? "yes" : "no";

app/src/main/java/hexlet/code/games/ProgressionGame.java

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,28 +7,31 @@ public class ProgressionGame {
77
static final int MAX_NUMBER_VALUE = 100;
88
static final int MAX_STEP_VALUE = 10;
99
static final int MIN_STEP_VALUE = 1;
10-
static final int NUMBER_OF_GAMES = 3;
1110
static final int COLUMN_INDEX = 3;
1211
static final int ROW_INDEX = 2;
1312

13+
public static String getProgressionAndQuestion(int[] numbers, int startNumber, int step, int hiddenNumberIndex) {
14+
StringBuilder printNumbers = new StringBuilder("Question:");
15+
for (int j = 0; j < numbers.length; j++) {
16+
numbers[j] = startNumber + j * step;
17+
if (j == hiddenNumberIndex) {
18+
printNumbers.append(" ..");
19+
} else {
20+
printNumbers.append(" ").append(numbers[j]);
21+
}
22+
}
23+
return printNumbers.toString();
24+
}
25+
1426
public static void progressionGame() {
1527
String gameRules = "What number is missing in the progression?";
1628
String[][] questionsAndAnswers = new String[COLUMN_INDEX][ROW_INDEX];
17-
for (int i = 0; i < NUMBER_OF_GAMES; i++) {
29+
for (int i = 0; i < Engine.NUMBER_OF_GAMES; i++) {
1830
int[] numbers = new int[MAX_NUMBERS_LENGTH];
1931
int startNumber = (int) (Math.random() * MAX_NUMBER_VALUE);
2032
int step = (int) (Math.random() * MAX_STEP_VALUE + MIN_STEP_VALUE);
2133
int hiddenNumberIndex = (int) (Math.random() * numbers.length);
22-
StringBuilder printNumbers = new StringBuilder("Question:");
23-
for (int j = 0; j < numbers.length; j++) {
24-
numbers[j] = startNumber + j * step;
25-
if (j == hiddenNumberIndex) {
26-
printNumbers.append(" ..");
27-
} else {
28-
printNumbers.append(" ").append(numbers[j]);
29-
}
30-
}
31-
questionsAndAnswers[i][0] = printNumbers.toString();
34+
questionsAndAnswers[i][0] = getProgressionAndQuestion(numbers, startNumber, step, hiddenNumberIndex);
3235
questionsAndAnswers[i][1] = Integer.toString(numbers[hiddenNumberIndex]);
3336
}
3437
Engine.gameRun(gameRules, questionsAndAnswers);

0 commit comments

Comments
 (0)