@@ -20,52 +20,34 @@ class SimpleMath {
20
20
void printOutput () {
21
21
try (Scanner scanner = new Scanner (inputStream )) {
22
22
String firstInput = promptForInput ("What is the first number? " , scanner );
23
- int firstNumber = validatedInput (firstInput );
23
+ PositiveInteger firstNumber = PositiveInteger . of (firstInput );
24
24
String secondInput = promptForInput ("What is the second number? " , scanner );
25
- int secondNumber = validatedInput (secondInput );
26
- if (secondNumber == 0 ) {
27
- throw new IllegalArgumentException ("Cannot divide by zero!" );
28
- }
29
- this .printStream .println (output (firstNumber , secondNumber ));
25
+ PositiveInteger secondNumber = PositiveInteger .of (secondInput );
26
+ this .printStream .println (formattedOutput (firstNumber , secondNumber ));
30
27
}
31
28
}
32
29
33
30
@ SuppressWarnings ("PMD.SystemPrintln" )
34
31
private String promptForInput (String prompt , Scanner scanner ) {
35
32
System .out .print (prompt );
36
- String input = readInput ( scanner ) ;
33
+ String input = scanner . hasNext () ? scanner . nextLine () : null ;
37
34
if (input == null || input .isBlank ()) {
38
35
throw new IllegalArgumentException ("Input must not be empty!" );
39
36
}
40
37
return input ;
41
38
}
42
39
43
- private String readInput (Scanner scanner ) {
44
- return scanner .hasNext () ? scanner .nextLine () : null ;
45
- }
46
-
47
- private static int validatedInput (String input ) {
48
- try {
49
- int number = Integer .parseInt (input );
50
- if (number < 0 ) {
51
- throw new IllegalArgumentException ("Please enter a positive number! Input: " + number );
52
- }
53
- return number ;
54
- } catch (NumberFormatException e ) {
55
- throw new IllegalArgumentException ("Please enter a valid number! Input: " + input , e );
56
- }
57
- }
58
-
59
- private static String output (int firstNumber , int secondNumber ) {
60
- return String .format ("""
61
- %d + %d = %d
62
- %d - %d = %d
63
- %d * %d = %d
64
- %d / %d = %d""" ,
65
- firstNumber , secondNumber , add (firstNumber , secondNumber ),
66
- firstNumber , secondNumber , subtract (firstNumber , secondNumber ),
67
- firstNumber , secondNumber , multiply (firstNumber , secondNumber ),
68
- firstNumber , secondNumber , divide (firstNumber , secondNumber ));
40
+ private static String formattedOutput (PositiveInteger firstNumber , PositiveInteger secondNumber ) {
41
+ return """
42
+ %s + %s = %d
43
+ %s - %s = %d
44
+ %s * %s = %d
45
+ %s / %s = %d""" .formatted (
46
+ firstNumber , secondNumber , add (firstNumber .intValue (), secondNumber .intValue ()),
47
+ firstNumber , secondNumber , subtract (firstNumber .intValue (), secondNumber .intValue ()),
48
+ firstNumber , secondNumber , multiply (firstNumber .intValue (), secondNumber .intValue ()),
49
+ firstNumber , secondNumber , divide (firstNumber .intValue (), secondNumber .intValue ())
50
+ );
69
51
}
70
52
71
53
private static int add (int firstNumber , int secondNumber ) {
@@ -81,6 +63,9 @@ private static int multiply(int firstNumber, int secondNumber) {
81
63
}
82
64
83
65
private static int divide (int firstNumber , int secondNumber ) {
66
+ if (secondNumber == 0 ) {
67
+ throw new IllegalArgumentException ("Cannot divide by zero!" );
68
+ }
84
69
return firstNumber / secondNumber ;
85
70
}
86
71
}
0 commit comments