Moving directories
parent
373c28e1b5
commit
0c25d47b36
@ -1,28 +0,0 @@
|
||||
public class Adder extends CalculateBase implements MathProcessing {
|
||||
|
||||
public Adder() {}
|
||||
|
||||
public Adder(double leftVal, double rightVal) {
|
||||
super(leftVal, rightVal);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void calculate() {
|
||||
setResult(getLeftVal() + getRightVal());
|
||||
}
|
||||
|
||||
// Using interfaces
|
||||
@Override
|
||||
public String getKeyWord() {
|
||||
return "add";
|
||||
}
|
||||
|
||||
@Override
|
||||
public double doCalculation(double leftVal, double rightVal) {
|
||||
setLeftVal(leftVal);
|
||||
setRightVal(rightVal);
|
||||
calculate();
|
||||
|
||||
return getResult();
|
||||
}
|
||||
}
|
@ -1,43 +0,0 @@
|
||||
public abstract class CalculateBase {
|
||||
private double leftVal;
|
||||
private double rightVal;
|
||||
private double result;
|
||||
|
||||
public abstract void calculate();
|
||||
|
||||
public CalculateBase() {}
|
||||
|
||||
public CalculateBase(double leftVal, double rightVal) {
|
||||
this.leftVal = leftVal;
|
||||
this.rightVal = rightVal;
|
||||
}
|
||||
|
||||
// Getters and setters
|
||||
public double getLeftVal() {
|
||||
return leftVal;
|
||||
}
|
||||
|
||||
public void setLeftVal(double leftVal) {
|
||||
this.leftVal = leftVal;
|
||||
}
|
||||
|
||||
public double getRightVal() {
|
||||
return rightVal;
|
||||
}
|
||||
|
||||
public void setRightVal(double rightVal) {
|
||||
this.rightVal = rightVal;
|
||||
}
|
||||
|
||||
public double getResult() {
|
||||
return result;
|
||||
}
|
||||
|
||||
public void setResult(double result) {
|
||||
this.result = result;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
@ -1,13 +0,0 @@
|
||||
public class Divider extends CalculateBase {
|
||||
|
||||
public Divider() {}
|
||||
|
||||
public Divider(double leftVal, double rightVal) {
|
||||
super(leftVal, rightVal);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void calculate() {
|
||||
setResult(getLeftVal() / getRightVal());
|
||||
}
|
||||
}
|
@ -1,29 +0,0 @@
|
||||
public class DynamicHelper {
|
||||
|
||||
private final MathProcessing[] handlers;
|
||||
|
||||
public DynamicHelper(MathProcessing[] handlers) {
|
||||
this.handlers = handlers;
|
||||
}
|
||||
|
||||
public void process(String statement) {
|
||||
String[] parts = statement.split(MathProcessing.SEPARATOR);
|
||||
String keyword = parts[0];
|
||||
double leftVal = Double.parseDouble(parts[1]);
|
||||
double rightVal = Double.parseDouble(parts[2]);
|
||||
|
||||
MathProcessing theHandler = null;
|
||||
for(MathProcessing handler : handlers) {
|
||||
if(keyword.equalsIgnoreCase(handler.getKeyWord())) {
|
||||
theHandler = handler;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
double result = theHandler.doCalculation(leftVal, rightVal);
|
||||
if (theHandler.doFormatting() != null)
|
||||
System.out.println(theHandler.doFormatting());
|
||||
else
|
||||
System.out.println("result = " + result);
|
||||
}
|
||||
}
|
@ -1,109 +0,0 @@
|
||||
public class MathEquation {
|
||||
private double leftVal;
|
||||
private double rightVal;
|
||||
private char opCode;
|
||||
private double result;
|
||||
|
||||
private static int numOfCalculations;
|
||||
private static double sumOfResults;
|
||||
|
||||
// Empty constructor to allow us to use MathEquation without needing to pass in anything
|
||||
public MathEquation() {}
|
||||
|
||||
// This only exists as a demo for chaining constructors
|
||||
public MathEquation(char opCode) {
|
||||
this.opCode = opCode;
|
||||
}
|
||||
|
||||
// Demonstrating how chaining constructors works
|
||||
public MathEquation(char opCode, double leftVal, double rightVal) {
|
||||
this(opCode);
|
||||
this.leftVal = leftVal;
|
||||
this.rightVal = rightVal;
|
||||
}
|
||||
|
||||
// Method to execute the calculations
|
||||
public void execute() {
|
||||
switch (this.opCode) {
|
||||
case 'a':
|
||||
this.result = this.leftVal + this.rightVal;
|
||||
break;
|
||||
case 's':
|
||||
this.result = this.leftVal - this.rightVal;
|
||||
break;
|
||||
case 'm':
|
||||
this.result = this.leftVal * this.rightVal;
|
||||
break;
|
||||
case 'd':
|
||||
this.result = this.rightVal != 0 ? this.leftVal / this.rightVal : 0.0d;
|
||||
break;
|
||||
default:
|
||||
System.out.println("Invalid opCode: " + this.opCode);
|
||||
this.result = 0.0d;
|
||||
break;
|
||||
}
|
||||
numOfCalculations++;
|
||||
sumOfResults += result;
|
||||
}
|
||||
|
||||
public void execute(double leftVal, double rightVal) {
|
||||
this.leftVal = leftVal;
|
||||
this.rightVal = rightVal;
|
||||
|
||||
execute();
|
||||
}
|
||||
|
||||
public void execute(int leftVal, int rightVal) {
|
||||
this.leftVal = leftVal;
|
||||
this.rightVal = rightVal;
|
||||
|
||||
execute();
|
||||
|
||||
result = (int) result;
|
||||
}
|
||||
|
||||
public static double getAverageResult() {
|
||||
return sumOfResults / numOfCalculations;
|
||||
}
|
||||
|
||||
public MathEquation(double leftVal, double rightVal, char opCode, double result) {
|
||||
this.leftVal = leftVal;
|
||||
this.rightVal = rightVal;
|
||||
this.opCode = opCode;
|
||||
this.result = result;
|
||||
}
|
||||
|
||||
// Setters
|
||||
|
||||
public double getLeftVal() {
|
||||
return leftVal;
|
||||
}
|
||||
|
||||
public void setLeftVal(double leftVal) {
|
||||
this.leftVal = leftVal;
|
||||
}
|
||||
|
||||
public double getRightVal() {
|
||||
return rightVal;
|
||||
}
|
||||
|
||||
public void setRightVal(double rightVal) {
|
||||
this.rightVal = rightVal;
|
||||
}
|
||||
|
||||
public char getOpCode() {
|
||||
return opCode;
|
||||
}
|
||||
|
||||
public void setOpCode(char opCode) {
|
||||
this.opCode = opCode;
|
||||
}
|
||||
|
||||
public double getResult() {
|
||||
return result;
|
||||
}
|
||||
|
||||
public void setResult(double result) {
|
||||
this.result = result;
|
||||
}
|
||||
}
|
@ -1,6 +0,0 @@
|
||||
public enum MathOperation {
|
||||
ADD,
|
||||
SUBTRACT,
|
||||
DIVIDE,
|
||||
MULTIPLY
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
public interface MathProcessing {
|
||||
|
||||
String SEPARATOR = " ";
|
||||
String getKeyWord();
|
||||
double doCalculation(double leftVal, double rightVal);
|
||||
default String doFormatting() {
|
||||
return null;
|
||||
}
|
||||
}
|
@ -1,13 +0,0 @@
|
||||
public class Multiplier extends CalculateBase {
|
||||
|
||||
public Multiplier() {}
|
||||
|
||||
public Multiplier(double leftVal, double rightVal) {
|
||||
super(leftVal, rightVal);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void calculate() {
|
||||
setResult(getLeftVal() * getRightVal());
|
||||
}
|
||||
}
|
@ -1,125 +0,0 @@
|
||||
import java.util.Scanner;
|
||||
|
||||
public class NewCalcEngine {
|
||||
|
||||
public static void main(String[] args) {
|
||||
// performCalculations();
|
||||
// executeCalculations();
|
||||
// executeInteractively();
|
||||
dynamicInteractivity();
|
||||
}
|
||||
|
||||
private static void dynamicInteractivity() {
|
||||
DynamicHelper dynamicHelper = new DynamicHelper(new MathProcessing[] {
|
||||
new Adder(),
|
||||
new PowerOf()
|
||||
});
|
||||
|
||||
Scanner in = new Scanner(System.in);
|
||||
System.out.println("Enter In Your Operation Please: \n");
|
||||
String userInput = in.nextLine();
|
||||
in.close();
|
||||
|
||||
dynamicHelper.process(userInput);
|
||||
|
||||
}
|
||||
|
||||
private static void executeInteractively() {
|
||||
Scanner in = new Scanner(System.in);
|
||||
System.out.println("Please Enter In A Calculation: \n");
|
||||
String userInput = in.nextLine();
|
||||
in.close();
|
||||
|
||||
String parts[] = userInput.split(" ");
|
||||
performOperation(parts);
|
||||
|
||||
}
|
||||
|
||||
private static void performOperation(String[] parts) {
|
||||
MathOperation mathOperation = MathOperation.valueOf(parts[0].toUpperCase());
|
||||
double leftVal = Double.parseDouble(parts[1]);
|
||||
double rightVal = Double.parseDouble(parts[2]);
|
||||
|
||||
CalculateBase calculateBase = createCalculation(mathOperation, leftVal, rightVal);
|
||||
calculateBase.calculate();
|
||||
System.out.println("\nOperation Performed: " + mathOperation);
|
||||
System.out.println("Result: " + calculateBase.getResult());
|
||||
|
||||
}
|
||||
|
||||
private static CalculateBase createCalculation(MathOperation mathOperation, double leftVal, double rightVal) {
|
||||
CalculateBase calculation = null;
|
||||
|
||||
switch (mathOperation) {
|
||||
case ADD:
|
||||
calculation = new Adder(leftVal, rightVal);
|
||||
break;
|
||||
case MULTIPLY:
|
||||
calculation = new Multiplier(leftVal, rightVal);
|
||||
break;
|
||||
case DIVIDE:
|
||||
calculation = new Divider(leftVal, rightVal);
|
||||
break;
|
||||
case SUBTRACT:
|
||||
calculation = new Subtractor(leftVal, rightVal);
|
||||
break;
|
||||
}
|
||||
|
||||
return calculation;
|
||||
}
|
||||
|
||||
private static void executeCalculations() {
|
||||
CalculateBase[] calculations = {
|
||||
new Divider(100.0d, 50.0d),
|
||||
new Adder(25.0d, 92.0d),
|
||||
new Subtractor(225.0d, 17.0d),
|
||||
new Multiplier(11.0d, 3.0d)
|
||||
};
|
||||
|
||||
System.out.println("Array Calculations");
|
||||
for (CalculateBase calculation: calculations) {
|
||||
calculation.calculate();
|
||||
System.out.println("Result: " + calculation.getResult());
|
||||
}
|
||||
}
|
||||
|
||||
private static void doCalculation(CalculateBase calculate, double leftVal, double rightVal) {
|
||||
|
||||
calculate.setLeftVal(leftVal);
|
||||
calculate.setRightVal(rightVal);
|
||||
calculate.calculate();
|
||||
System.out.println("The result of the calculation is: " + calculate.getResult());
|
||||
}
|
||||
|
||||
private static void performCalculations() {
|
||||
|
||||
MathEquation[] mathEquation = new MathEquation[4];
|
||||
mathEquation[0] = new MathEquation('d', 100.0d, 50.0d);
|
||||
mathEquation[1] = new MathEquation('a', 25.0d, 92.0d);
|
||||
mathEquation[2] = new MathEquation('s', 225.0d, 17.0d);
|
||||
mathEquation[3] = new MathEquation('m', 11.0d, 3.0d);
|
||||
|
||||
for (MathEquation equation : mathEquation) {
|
||||
equation.execute();
|
||||
System.out.println("Result = " + equation.getResult());
|
||||
}
|
||||
|
||||
System.out.println("Average Result = " + MathEquation.getAverageResult());
|
||||
|
||||
System.out.println("\nUsing Execute Method Overloads\n");
|
||||
|
||||
MathEquation mathEquationOverload = new MathEquation('d');
|
||||
double leftDouble = 9.0d;
|
||||
double rightDouble = 4.0d;
|
||||
|
||||
mathEquationOverload.execute(leftDouble, rightDouble);
|
||||
System.out.println("Overloaded result with doubles: " + mathEquationOverload.getResult());
|
||||
|
||||
int leftInt = 9;
|
||||
int rightInt = 4;
|
||||
|
||||
mathEquationOverload.execute(leftInt, rightInt);
|
||||
System.out.println("Overloaded result with ints: " + mathEquationOverload.getResult());
|
||||
|
||||
}
|
||||
}
|
@ -1,21 +0,0 @@
|
||||
public class PowerOf implements MathProcessing {
|
||||
|
||||
private String formattedOutput;
|
||||
|
||||
@Override
|
||||
public String getKeyWord() {
|
||||
return "power";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String doFormatting() {
|
||||
return formattedOutput;
|
||||
}
|
||||
|
||||
@Override
|
||||
public double doCalculation(double leftVal, double rightVal) {
|
||||
double product = Math.pow(leftVal, rightVal);
|
||||
formattedOutput = leftVal + " Has Been Raised To The Power Of " + rightVal + " Which Results In: " + product;
|
||||
return product;
|
||||
}
|
||||
}
|
@ -1,13 +0,0 @@
|
||||
public class Subtractor extends CalculateBase {
|
||||
|
||||
public Subtractor() {}
|
||||
|
||||
public Subtractor(double leftVal, double rightVal) {
|
||||
super(leftVal, rightVal);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void calculate() {
|
||||
setResult(getLeftVal() - getRightVal());
|
||||
}
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
package src;
|
||||
|
||||
public interface Animal {
|
||||
|
||||
String animalName();
|
||||
String animalSound();
|
||||
double animalPrice();
|
||||
|
||||
}
|
@ -1,38 +0,0 @@
|
||||
package src;
|
||||
|
||||
public class AnimalHelper {
|
||||
|
||||
private final Animal[] animals;
|
||||
private double averagePrice;
|
||||
|
||||
public AnimalHelper(Animal[] animals) {
|
||||
this.animals = animals;
|
||||
}
|
||||
|
||||
public void displayInformation() {
|
||||
/* Display the animal information */
|
||||
|
||||
int total = 0;
|
||||
double sum = 0.0;
|
||||
|
||||
for (Animal animal : animals) {
|
||||
StringBuilder stringBuilder = new StringBuilder();
|
||||
|
||||
stringBuilder.append("\n\nName: " + animal.animalName());
|
||||
stringBuilder.append("\nSound: " + animal.animalSound());
|
||||
stringBuilder.append("\nPrice: £" + animal.animalPrice());
|
||||
|
||||
System.out.println(stringBuilder.toString());
|
||||
|
||||
total++;
|
||||
sum += animal.animalPrice();
|
||||
}
|
||||
averagePrice = sum / total;
|
||||
}
|
||||
|
||||
public void displayAveragePrice() {
|
||||
/* Display the average price of all the animals */
|
||||
|
||||
System.out.printf("%nThe Average Price For All The Animals Are: £%.2f", averagePrice);
|
||||
}
|
||||
}
|
@ -1,17 +0,0 @@
|
||||
package src;
|
||||
|
||||
public class AnimalMain {
|
||||
public static void main(String[] args) {
|
||||
displayAnimals();
|
||||
}
|
||||
|
||||
private static void displayAnimals() {
|
||||
|
||||
// Creating an array of animal objects
|
||||
AnimalHelper helper = new AnimalHelper(new Animal[] { new Cow(), new Cat(), new Dog(), new Horse() });
|
||||
|
||||
// Displaying information about the animals
|
||||
helper.displayInformation();
|
||||
helper.displayAveragePrice();
|
||||
}
|
||||
}
|
@ -1,20 +0,0 @@
|
||||
package src;
|
||||
|
||||
public class Cat implements Animal {
|
||||
|
||||
@Override
|
||||
public String animalName() {
|
||||
return "Cat";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String animalSound() {
|
||||
return "Meoooww";
|
||||
}
|
||||
|
||||
@Override
|
||||
public double animalPrice() {
|
||||
return 29.99;
|
||||
}
|
||||
|
||||
}
|
@ -1,20 +0,0 @@
|
||||
package src;
|
||||
|
||||
public class Cow implements Animal {
|
||||
|
||||
@Override
|
||||
public String animalName() {
|
||||
return "Cow";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String animalSound() {
|
||||
return "Moooo";
|
||||
}
|
||||
|
||||
@Override
|
||||
public double animalPrice() {
|
||||
return 10.99;
|
||||
}
|
||||
|
||||
}
|
@ -1,20 +0,0 @@
|
||||
package src;
|
||||
|
||||
public class Dog implements Animal {
|
||||
|
||||
@Override
|
||||
public String animalName() {
|
||||
return "Dog";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String animalSound() {
|
||||
return "Woof Woof";
|
||||
}
|
||||
|
||||
@Override
|
||||
public double animalPrice() {
|
||||
return 15.99;
|
||||
}
|
||||
|
||||
}
|
@ -1,20 +0,0 @@
|
||||
package src;
|
||||
|
||||
public class Horse implements Animal {
|
||||
|
||||
@Override
|
||||
public String animalName() {
|
||||
return "Horse";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String animalSound() {
|
||||
return "Neighh";
|
||||
}
|
||||
|
||||
@Override
|
||||
public double animalPrice() {
|
||||
return 59.99;
|
||||
}
|
||||
|
||||
}
|
@ -1,18 +0,0 @@
|
||||
package src;
|
||||
|
||||
public class ByFives implements Counter {
|
||||
|
||||
private int num = 5;
|
||||
private int nextNum;
|
||||
|
||||
@Override
|
||||
public int countBy() {
|
||||
return num;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getNextNum() {
|
||||
return nextNum += num;
|
||||
}
|
||||
|
||||
}
|
@ -1,18 +0,0 @@
|
||||
package src;
|
||||
|
||||
public class ByFours implements Counter {
|
||||
|
||||
private int num = 4;
|
||||
private int nextNum;
|
||||
|
||||
@Override
|
||||
public int countBy() {
|
||||
return num;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getNextNum() {
|
||||
return nextNum += num;
|
||||
}
|
||||
|
||||
}
|
@ -1,18 +0,0 @@
|
||||
package src;
|
||||
|
||||
public class ByOnes implements Counter {
|
||||
|
||||
private int num = 1;
|
||||
private int nextNum;
|
||||
|
||||
@Override
|
||||
public int countBy() {
|
||||
return num;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getNextNum() {
|
||||
return nextNum += num;
|
||||
}
|
||||
|
||||
}
|
@ -1,18 +0,0 @@
|
||||
package src;
|
||||
|
||||
public class ByThrees implements Counter {
|
||||
|
||||
private int num = 3;
|
||||
private int nextNum;
|
||||
|
||||
@Override
|
||||
public int countBy() {
|
||||
return num;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getNextNum() {
|
||||
return nextNum += num;
|
||||
}
|
||||
|
||||
}
|
@ -1,18 +0,0 @@
|
||||
package src;
|
||||
|
||||
public class ByTwos implements Counter {
|
||||
|
||||
private int num = 2;
|
||||
private int nextNum;
|
||||
|
||||
@Override
|
||||
public int countBy() {
|
||||
return num;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getNextNum() {
|
||||
return nextNum += num;
|
||||
}
|
||||
|
||||
}
|
@ -1,7 +0,0 @@
|
||||
package src;
|
||||
|
||||
public interface Counter {
|
||||
|
||||
int countBy();
|
||||
int getNextNum();
|
||||
}
|
@ -1,34 +0,0 @@
|
||||
package src;
|
||||
|
||||
public class CounterHelper {
|
||||
|
||||
private Counter[] counters;
|
||||
private Counter userCounter = null;
|
||||
|
||||
public CounterHelper(Counter... counters) {
|
||||
this.counters = counters;
|
||||
}
|
||||
|
||||
public void doInteractive(int userInput) {
|
||||
|
||||
// Find the correct counter to count by.
|
||||
// When no counter is found, display error message to user and quit the program
|
||||
for (Counter counter: counters) {
|
||||
if (userInput == counter.countBy())
|
||||
this.userCounter = counter;
|
||||
}
|
||||
if (userCounter == null) {
|
||||
System.out.println("Counter Not Found");
|
||||
System.exit(0);
|
||||
}
|
||||
}
|
||||
|
||||
public void displayCounter(int iterations) {
|
||||
|
||||
// Show the counter for the number of iterations that the user inputted
|
||||
System.out.println();
|
||||
for (int i = 0; i < iterations; i++) {
|
||||
System.out.println(userCounter.getNextNum());
|
||||
}
|
||||
}
|
||||
}
|
@ -1,40 +0,0 @@
|
||||
package src;
|
||||
|
||||
import java.util.Scanner;
|
||||
|
||||
public class CounterMain {
|
||||
public static void main(String[] args) {
|
||||
countUp();
|
||||
countUpInteractively();
|
||||
}
|
||||
|
||||
private static void countUp() {
|
||||
ByTwos twos = new ByTwos();
|
||||
ByFives fives = new ByFives();
|
||||
|
||||
// Display the first 5 numbers for each counter defined
|
||||
for (int i = 0; i < 5; i++) {
|
||||
System.out.println("Counting By " + twos.countBy());
|
||||
System.out.println(twos.getNextNum());
|
||||
System.out.println("Counting By " + fives.countBy());
|
||||
System.out.println(fives.getNextNum());
|
||||
}
|
||||
}
|
||||
|
||||
private static void countUpInteractively() {
|
||||
Scanner in = new Scanner(System.in);
|
||||
System.out.println("Enter In The Number That You Want To Count:\n");
|
||||
int userInput = in.nextInt();
|
||||
|
||||
CounterHelper helper = new CounterHelper(new ByOnes(), new ByTwos(), new ByThrees(), new ByFours(),
|
||||
new ByFives());
|
||||
helper.doInteractive(userInput);
|
||||
|
||||
System.out.println("Enter In The Number Of Times You Want To Count:\n");
|
||||
int userIterations = in.nextInt();
|
||||
|
||||
helper.displayCounter(userIterations);
|
||||
in.close();
|
||||
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue