THIS BOOK IS STILL IN BETA STATE.
If you’re interested in becoming a beta tester, please email me at adam@pragmaticways.com to request a free copy.
Day 1 Exercises
Hello World Program
public class LearningJava {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
Greet My Friend Program
import java.util.Scanner;
public class GreetMyFriend {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("What is your first name? ");
String firstName = input.nextLine();
System.out.println("What is your last name? ");
String lastName = input.nextLine();
System.out.println("What is your street address? ");
String address = input.nextLine();
System.out.println("What city do you live in? ");
String city = input.nextLine();
System.out.println("What state do you live in? ");
String state = input.nextLine();
System.out.println("What is your favorite color? ");
String favoriteColor = input.nextLine();
System.out.println("What is your favorite food? ");
String favoriteFood = input.nextLine();
System.out.println("What is your third favorite dinosaur? ");
String thirdFavoriteDinosaur = input.nextLine();
System.out.println("First Name: " + firstName);
System.out.println("Last Name: " + lastName);
System.out.println("Address: " + address);
System.out.println("City: " + city);
System.out.println("State: " + state);
System.out.println("Favorite Color: " + favoriteColor);
System.out.println("Favorite Food: " + favoriteFood);
System.out.println("Third Favorite Dinosaur: " + thirdFavoriteDinosaur);
}
}
Day 2 Exercises
import java.util.Scanner;
import java.util.Date;
import java.util.Calendar;
import java.text.DecimalFormat;
public class MyClass {
public static void main(String []args){
Scanner input = new Scanner(System.in);
System.out.println("What is your first name? ");
String userFirstName = input.nextLine();
System.out.println("What is your middle name? ");
String userMiddleName = input.nextLine();
char userMiddleInitial = userMiddleName.charAt(0);
System.out.println("What is your last name? ");
String userLastName = input.nextLine();
System.out.println("What year were you born? ");
int userBirthYear = input.nextInt();
System.out.println("true or false: Your birthday already happened this year? ");
boolean isPastBirthday = input.nextBoolean();
System.out.println("How much money did you get for your birthday? ");
double moneyReceivedOnBirthday = input.nextDouble();
int userCurrentAge;
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
int currentYear = calendar.get(Calendar.YEAR);
if (isPastBirthday) {
userCurrentAge = (currentYear - userBirthYear);
} else {
userCurrentAge = (currentYear - userBirthYear) - 1;
}
DecimalFormat moneyFormat = new DecimalFormat("0.00");
String message =
"Hello " +
userFirstName + " " +
userMiddleInitial + " " +
userLastName + "! You are " + userCurrentAge +
" years old right now. You received $" +
moneyFormat.format(moneyReceivedOnBirthday) + " on your birthday. Congrats!";
System.out.println(message);
}
}
Unit Conversion Calculator
package com.company;
import java.util.InputMismatchException;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
boolean shouldRunProgram = true;
while (shouldRunProgram) {
runMainMenu();
shouldRunProgram = askToRerunProgram();
}
}
private static void runMainMenu() {
String unitCategory = askForUnitCategory();
String availableUnitsForCategory[] = getAvailableUnitsForCategory(unitCategory);
String startingUnit = askForStartingUnit(unitCategory, availableUnitsForCategory);
double amountOfStartingUnit = askForAmountOfStaringUnit(startingUnit);
String endingUnit = askForEndingUnit(unitCategory, availableUnitsForCategory);
double amountOfEndingUnit = convert(unitCategory, startingUnit, amountOfStartingUnit, endingUnit);
printResults(startingUnit, amountOfStartingUnit, endingUnit, amountOfEndingUnit);
}
private static String askForUnitCategory() {
String promptForUnitCategory = "\nWhat category of units do you need to convert?";
String availableUnitCategories[] = {
"LENGTH", "TIME", "TEMPERATURE", "MASS"
};
String unitCategory = askForOption(promptForUnitCategory, availableUnitCategories);
return unitCategory;
}
private static String askForOption(String prompt, String[] options) {
boolean isValidChoice;
String choice;
do {
System.out.print(prompt);
System.out.println(" You can type: ");
for (String option : options) {
System.out.println(option);
}
System.out.print("Your choice: ");
Scanner scanner = new Scanner(System.in);
choice = scanner.nextLine().toUpperCase();
isValidChoice = verifyChoiceIsValidOption(choice, options);
if (!isValidChoice) {
printInvalidOptionError();
}
} while (!isValidChoice);
return choice;
}
private static boolean verifyChoiceIsValidOption(String choice, String[] options) {
for (String option : options) {
if (option.equals(choice)) {
return true;
}
}
return false;
}
private static String askForStartingUnit(String unitCategory, String[] availableUnitsForCategory) {
String promptForStartingUnit = "\nWhat unit of " + unitCategory + " are you converting from?";
String startingUnitType = askForOption(promptForStartingUnit, availableUnitsForCategory);
return startingUnitType;
}
private static double askForAmountOfStaringUnit(String unit) {
boolean isValidAmount;
double amount = 0;
do {
System.out.print("\nEnter the amount of " + unit + " you need to convert from: ");
Scanner scanner = new Scanner(System.in);
try {
amount = scanner.nextDouble();
isValidAmount = true;
} catch (InputMismatchException e) {
System.out.print("\nPlease enter the number only.");
isValidAmount = false;
}
} while (isValidAmount);
return amount;
}
private static String askForEndingUnit(String unitCategory, String[] availableUnitsForCategory) {
String promptForEndingUnit = "\nWhat unit of " + unitCategory + " do you need to convert to?";
String startingUnitType = askForOption(promptForEndingUnit, availableUnitsForCategory);
return startingUnitType;
}
private static String[] getAvailableUnitsForCategory(String unitCategory) {
if (unitCategory.toUpperCase().equals("LENGTH")) {
return getLengthUnits();
} else if (unitCategory.toUpperCase().equals("TIME")) {
return getTimeUnits();
} else if (unitCategory.toUpperCase().equals("TEMPERATURE")) {
return getTemperatureUnits();
} else if (unitCategory.toUpperCase().equals("MASS")) {
return getMassUnits();
} else {
printInvalidOptionError();
return new String[] {};
}
}
private static String[] getLengthUnits() {
return new String[] {"METERS", "FEET"};
}
private static String[] getTimeUnits() {
return new String[] {"SECONDS", "MINUTES"};
}
private static String[] getTemperatureUnits() {
return new String[] {"CELSIUS", "FAHRENHEIT"};
}
private static String[] getMassUnits() {
return new String[] {"KILOGRAMS", "POUNDS"};
}
private static double convert(String unitCategory, String startingUnit, double amountOfStartingUnit, String endingUnit) {
switch (unitCategory) {
case "LENGTH":
return convertForLength(startingUnit, amountOfStartingUnit, endingUnit);
case "TIME":
return convertForTime(startingUnit, amountOfStartingUnit, endingUnit);
case "TEMPERATURE":
return convertForTemperature(startingUnit, amountOfStartingUnit, endingUnit);
case "MASS":
return convertForMass(startingUnit, amountOfStartingUnit, endingUnit);
default:
printInvalidOptionError();
return 0;
}
}
private static double convertForLength(String startingUnit, double amountOfStartingUnit, String endingUnit) {
if (startingUnit.equals("METERS") && endingUnit.equals("FEET")) {
return convertMetersToFeet(amountOfStartingUnit);
} else if (startingUnit.equals("FEET") && endingUnit.equals("METERS")) {
return convertFeetToMeters(amountOfStartingUnit);
} else if (startingUnit.equals(endingUnit)) {
return amountOfStartingUnit;
} else {
printInvalidOptionError();
return 0;
}
}
private final static double FEET_PER_METER = 3.281;
private static double convertMetersToFeet(double meters) {
return meters * FEET_PER_METER;
}
private static double convertFeetToMeters(double feet) {
return feet / FEET_PER_METER;
}
private static double convertForTime(String startingUnit, double amountOfStartingUnit, String endingUnit) {
if (startingUnit.equals("SECONDS") && endingUnit.equals("MINUTES")) {
return convertSecondsToMinutes(amountOfStartingUnit);
} else if (startingUnit.equals("MINUTES") && endingUnit.equals("SECONDS")) {
return convertMinutesToSeconds(amountOfStartingUnit);
} else if (startingUnit.equals(endingUnit)) {
return amountOfStartingUnit;
} else {
printInvalidOptionError();
return 0;
}
}
private final static int SECONDS_PER_MINUTE = 60;
private static double convertSecondsToMinutes(double seconds) {
return seconds / SECONDS_PER_MINUTE;
}
private static double convertMinutesToSeconds(double minutes) {
return minutes * SECONDS_PER_MINUTE;
}
private static double convertForTemperature(String startingUnit, double amountOfStartingUnit, String endingUnit) {
if (startingUnit.equals("CELSIUS") && endingUnit.equals("FAHRENHEIT")) {
return convertCelsiusToFahrenheit(amountOfStartingUnit);
} else if (startingUnit.equals("FAHRENHEIT") && endingUnit.equals("CELSIUS")) {
return convertFahrenheitToCelsius(amountOfStartingUnit);
} else if (startingUnit.equals(endingUnit)) {
return amountOfStartingUnit;
} else {
printInvalidOptionError();
return 0;
}
}
private static double convertCelsiusToFahrenheit(double celsius) {
return (celsius * (9.0/5.0)) + 32;
}
private static double convertFahrenheitToCelsius(double fahrenheit) {
return (fahrenheit - 32) * (5.0/9.0);
}
private static double convertForMass(String startingUnit, double amountOfStartingUnit, String endingUnit) {
if (startingUnit.equals("KILOGRAMS") && endingUnit.equals("POUNDS")) {
return convertKilogramsToPounds(amountOfStartingUnit);
} else if (startingUnit.equals("POUNDS") && endingUnit.equals("KILOGRAMS")) {
return convertPoundsToKilograms(amountOfStartingUnit);
} else if (startingUnit.equals(endingUnit)) {
return amountOfStartingUnit;
} else {
printInvalidOptionError();
return 0;
}
}
private final static double POUNDS_PER_KILOGRAM = 2.205;
private static double convertKilogramsToPounds(double kilograms) {
return kilograms / POUNDS_PER_KILOGRAM;
}
private static double convertPoundsToKilograms(double pounds) {
return pounds * POUNDS_PER_KILOGRAM;
}
private static void printResults(String startingUnit, double amountOfStartingUnit, String endingUnit, double amountOfEndingUnit) {
System.out.println("\nResult: " + amountOfStartingUnit + " " + startingUnit + " equals " +
amountOfEndingUnit + " " + endingUnit);
}
private static boolean askToRerunProgram() {
System.out.print("\nWould you like to run the Unit Conversion Calculator again? (Y/N): ");
Scanner scanner = new Scanner(System.in);
String userResponse = scanner.next().toUpperCase();
return userResponse.equals("Y");
}
private static void printInvalidOptionError() {
System.out.println("\nERROR!");
System.out.println("An invalid option was selected. Please try again.");
}
}