@@ -20,52 +20,34 @@ class SimpleMath {
2020 void printOutput () {
2121 try (Scanner scanner = new Scanner (inputStream )) {
2222 String firstInput = promptForInput ("What is the first number? " , scanner );
23- int firstNumber = validatedInput (firstInput );
23+ PositiveInteger firstNumber = PositiveInteger . of (firstInput );
2424 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 ));
3027 }
3128 }
3229
3330 @ SuppressWarnings ("PMD.SystemPrintln" )
3431 private String promptForInput (String prompt , Scanner scanner ) {
3532 System .out .print (prompt );
36- String input = readInput ( scanner ) ;
33+ String input = scanner . hasNext () ? scanner . nextLine () : null ;
3734 if (input == null || input .isBlank ()) {
3835 throw new IllegalArgumentException ("Input must not be empty!" );
3936 }
4037 return input ;
4138 }
4239
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+ );
6951 }
7052
7153 private static int add (int firstNumber , int secondNumber ) {
@@ -81,6 +63,9 @@ private static int multiply(int firstNumber, int secondNumber) {
8163 }
8264
8365 private static int divide (int firstNumber , int secondNumber ) {
66+ if (secondNumber == 0 ) {
67+ throw new IllegalArgumentException ("Cannot divide by zero!" );
68+ }
8469 return firstNumber / secondNumber ;
8570 }
8671}
0 commit comments