Write program that prints numbers from 1 to X
Assignment question: Write a program that prints the numbers from 1 to X. But for multiples of 2 print “Fiddle” instead of the number and for multiples of 5 print “Faddle” instead of the number. For numbers which are multiples of both 2 and 5 print “Fiddle Faddle” instead of the number.
- The program should be constructed in Java 1.7 or below.
- The program should prompt for and accept user input for X from the command line.
- The program should do basic input validation on what the user enters (e.g. -1 and X are invalid input)
- The program should exit when the user enters ‘quit’
Your deliverable: Please provide the source code as a well formed maven project including any tests as well as instructions for execution, if necessary.
Example program execution:
Enter an integer > 0: X
Invalid input ‘X’
Enter an integer > 0: -1
Invalid input ‘-1’
Enter an integer > 0: 0
Invalid input ‘0’
Enter an integer > 0: 1
1
Enter an integer > 0: 10
1
fiddle
3
fiddle
faddle
fiddle
7
fiddle
9
fiddle faddle
Enter an integer > 0: quit
Solution:
- Project structure:
- Create maven project name: PrintNumbers in eclispe
- Create PrintNumbers.java class inside com.fiddle.printnumbers package and copy paste below code:
/* * PrintNumbers.java * Version 1.0 */ package com.fiddle.printnumbers; import java.io.InputStreamReader; import java.util.Scanner; /** * This program prints the numbers from 1 to X. But for multiples of 2 print * "Fiddle" instead of the number and for multiples of 5 print "Faddle" instead * of the number. For numbers which are multiples of both 2 and 5 print * "Fiddle Faddle" instead of the number. * * The program has been constructed in jdk1.7.0_60 The program should prompt for * and accept user input for X from the commandline The program should do basic * input validation on what the user enters (e.g. -1 and X are invalid input) * The program should exit when the user enters 'quit' * * * */ public class PrintNumbers { private static final String INVALID_INPUT = "Invalid input '"; private static final String ENTER_AN_INTEGER_0 = "Enter an integer > 0:"; private static final String FIDDLE_FADDLE = "Fiddle Faddle"; private static final String FADDLE = "Faddle"; private static final String FIDDLE = "Fiddle"; private static Scanner scanner = new Scanner(new InputStreamReader(System.in)); private static String input = null; /** * @param args */ public static void main(String[] args) { try { while (true) { System.out.print(ENTER_AN_INTEGER_0); input = scanner.nextLine(); if (input.equalsIgnoreCase("quit")) { Runtime.getRuntime().exit(0); } int inputValue = 0; if (isInteger(input)) { inputValue = Integer.parseInt(input); } else { System.out.println(INVALID_INPUT + input + "'"); continue; } if (inputValue < 1) { System.out.print(INVALID_INPUT + inputValue + "'\n"); continue; } int[] array = new int[inputValue]; for (int i = 0; i < array.length; i++) { array[i] = i + 1; } printOutput(array); } } catch (Exception e) { e.printStackTrace(); } } /** * @param array */ private static void printOutput(int[] array) { for (int i : array) { if (i == 1) { System.out.println(i); } else if (i % 2 == 0 && i % 5 == 0) { System.out.println(FIDDLE_FADDLE); } else if (i % 2 == 0) { System.out.println(FIDDLE); } else if (i % 5 == 0) { System.out.println(FADDLE); } else { System.out.println(i); } } } /** * @param input * @return */ public static boolean isInteger(String input) { try { Integer.parseInt(input); } catch (NumberFormatException e) { return false; } return true; } }
Note: To run this program from command line please use PrintNumber.bat file which is included in project for download. Below is content of bat file:
CD /d C:\temp\PrintNumbers\src\main\java
start cmd /k echo To run program please enter: java com/fiddle/printnumbers/PrintNumbers and press enter
Download project: PrintNumbers