Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Test #113

Open
wants to merge 13 commits into
base: master
Choose a base branch
from
13 changes: 13 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,19 @@
<groupId>com.zipcodewilmington</groupId>
<artifactId>scientific_calculator</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>

<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>


</project>
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,10 @@ public static String getStringInput(String prompt) {
String userInput = scanner.nextLine();
return userInput;
}

public static Integer getIntegerInput(String prompt) {
return null;
}

public static Double getDoubleInput(String prompt) {
return null;
Scanner scanner = new Scanner(System.in);
println(prompt);
Double userInput = scanner.nextDouble();
return userInput;
}
}
Original file line number Diff line number Diff line change
@@ -1,17 +1,322 @@
package com.zipcodewilmington.scientificcalculator;

import java.util.Locale;

/**
* Created by leon on 2/9/18.
*/
public class MainApplication {

public static double display = 0; //ie current number
public static String unitsMode = "degrees";
public static String displayMode = "decimal";
public static double memory = 0;
public static void main(String[] args) {
Console.println("Welcome to my calculator!");
String s = Console.getStringInput("Enter a string");
Integer i = Console.getIntegerInput("Enter an integer");
Double d = Console.getDoubleInput("Enter a double.");
//THINGS TO ADD STILL: EXCEPTION/ERROR HANDLING FORCING A CLEAR;
String s = "";
while(!(s.equals("kill"))){
s = Console.getStringInput("What do you want to do?");
switch (s.toLowerCase()) {
case "current number":
String curNumStr = String.format("The current number is: %s",displayPrint(display));
break;
case "clear screen":
clearScreen();
break;
case "change current number":
display = Console.getDoubleInput("Give me a new current number");
String changeCurStr = String.format("The new number is %s.",displayPrint(display));
Console.println(changeCurStr);
break;
case "add":
double adder = Console.getDoubleInput("Give me the number to add to the display");
String addStr = String.format("The sum of %s and %s is %s.",displayPrint(display),displayPrint(adder),displayPrint(add(adder)));
Console.println(addStr);
break;
case "subtract":
double subber = Console.getDoubleInput("Give me the number to subtract from the display");
String subStr = String.format("The difference of %s and %s is %s.",displayPrint(display),displayPrint(subber),displayPrint(subtract(subber)));
Console.println(subStr);
break;
case "multiply":
double multer = Console.getDoubleInput("Give me the number to multiply the display by");
String mulStr = String.format("The product of %s and %s is %s.",displayPrint(display),displayPrint(multer),displayPrint(multiply(multer)));
Console.println(mulStr);
break;
case "divide":
//perfect spot for error testing
double divver = Console.getDoubleInput("Give me the number to divide the display by");
String divStr = String.format("The quotient of %s and %s is %s.",displayPrint(display),displayPrint(divver),displayPrint(divide(divver)));
Console.println(divStr);
break;
case "square":
String squstr = String.format("The square of %s is %s.",displayPrint(display),displayPrint(display * display));
Console.println(squstr);
break;
case "square root":
String sqrtstr = String.format("The square root of %s is %s.",displayPrint(display),displayPrint(Math.sqrt(display)));
Console.println(sqrtstr);
break;
case "variable exponent":
double exponent = Console.getDoubleInput("What power should I raise the display to?");
String expstr = String.format("%s to the %sth power is %s",displayPrint(display),displayPrint(exponent),displayPrint(Math.pow(display,exponent)));
Console.println(expstr);
break;
case "inverse":
String invstr = String.format("The inverse of %s is %s",displayPrint(display), displayPrint((float) (1/ display)));
Console.println(invstr);
break;
case "negate":
String negstr = String.format("The display number of %s has been negated to %s ",displayPrint(display),displayPrint(display * -1));
Console.println(negstr);
break;
case "switch display mode":
String switchdispstr = String.format("The display mode is now: %s",switchDisplayMode());
Console.println("Loss of data is possible if you switch display modes, input data must be decimal");
Console.println(switchdispstr);
break;
case "binary":
String binstr = String.format("The display mode is now: %s",switchDisplayMode("binary"));
Console.println("Loss of data is possible if you switch display modes, input data must be decimal");
Console.println(binstr);
break;
case "decimal":
String decistr = String.format("The display mode is now: %s",switchDisplayMode("decimal"));
Console.println("Loss of data is possible if you switch display modes, input data must be decimal");
Console.println(decistr);
break;
case "octal":
String octalstr = String.format("The display mode is now: %s",switchDisplayMode("octal"));
Console.println("Loss of data is possible if you switch display modes, input data must be decimal");
Console.println(octalstr);
break;
case "hexadecimal":
String hexstr = String.format("The display mode is now: %s",switchDisplayMode("hexadecimal"));
Console.println("Loss of data is possible if you switch display modes, input data must be decimal");
Console.println(hexstr);
break;
case "add to memory":
memory = Console.getDoubleInput("Give me the number to memorize");
String addmemstr = String.format("The new memorized number is %s.",displayPrint(memory));
Console.println(addmemstr);
break;
case "clear memory":
memory = 0;
Console.println("Memory has been cleared");
break;
case "recall memory":
String recallstr = String.format("The memorized number is %s.",displayPrint(memory));
Console.println(recallstr);
break;
case "sin":
String sinstr = String.format("The sine of %s is %s", displayPrint(display),displayPrint(Math.sin(unitter(display))));
Console.println(sinstr);
break;
case "cos":
String cosstr = String.format("The cosine of %s is %s", displayPrint(display),displayPrint(Math.cos(unitter(display))));
Console.println(cosstr);
break;
case "tan":
String tanstr = String.format("The tangent of %s is %s", displayPrint(display),displayPrint(Math.tan(unitter(display))));
Console.println(tanstr);
break;
case "inv sin":
String cscstr = String.format("The inverse sine of %s is %s", displayPrint(display),displayPrint( (float)(1 / (Math.sin(unitter(display))))));
Console.println(cscstr);
break;
case "inv cos":
String secstr = String.format("The inverse cosine of %s is %s", displayPrint(display),displayPrint( (float)(1 / (Math.cos(unitter(display))))));
Console.println(secstr);
break;
case "inv tan":
String cotstr = String.format("The inverse tangent of %s is %s", displayPrint(display),displayPrint( (float)(1 / (Math.tan(unitter(display))))));
Console.println(cotstr);
break;
case "switch units mode":
String switchunitstr = String.format("The units mode is now: %s",switchUnitsMode());
Console.println(switchunitstr);
break;
case "radians":
String radstr = String.format("The units mode is now: %s",switchUnitsMode("radians"));
Console.println(radstr);
break;
case "degrees":
String degstr = String.format("The units mode is now: %s",switchUnitsMode("degrees"));
Console.println(degstr);
break;
case "log":
String logstr = String.format("The log of %s is %s.",displayPrint(display),displayPrint(Math.log10(display)));
Console.println(logstr);
break;
case "inv log":
String invlogstr = String.format("The inv log of %s is %s.",displayPrint(display),displayPrint(Math.pow(10,display)));
Console.println(invlogstr);
break;
case "ln":
String lnstr = String.format("The natural log of %s is %s.",displayPrint(display),displayPrint(Math.log(display)));
Console.println(lnstr);
break;
case "inv ln":
String invlnstr = String.format("The inv natural log of %s is %s.",displayPrint(display),displayPrint(Math.exp(display)));
Console.println(invlnstr);
break;
case "factorial":
String facstr = String.format("The factorial of %s is %s.",displayPrint(display),displayPrint(factorial()));
Console.println(facstr);
break;
//extra function #1
case "absolute value":
String absstr = String.format("The square of %s is %s.",displayPrint(display),displayPrint(Math.abs(display)));
Console.println(absstr);
break;
//extra function #2
case "kill":
Console.println("The calculator will now exit...");
break;
default:
Console.println("Cannot compute. Please try again");
break;
}
}
}
//I have no idea if this will work or not
public static void clearScreen() {
try{
Runtime.getRuntime().exec("clear");
}
catch (final Exception e){
System.exit(1);
}
}
public static double add(double adder){
return display + adder;
}
public static double subtract(double subber){
return display - subber;
}
public static double multiply(double multer){
return display * multer;
}
public static double divide(double divver){
return display / divver;
}
public static String switchDisplayMode(){
switch(displayMode){
case "decimal":
displayMode = "hexadecimal";
return displayMode;
case "hexadecimal":
displayMode = "binary";
return displayMode;
case "binary":
displayMode = "octal";
return displayMode;
case "octal":
displayMode = "decimal";
return displayMode;
default:
displayMode = "This should never be returned";
return displayMode;
}
}
public static String switchDisplayMode(String mode){
switch(mode){
case "decimal":
displayMode = "decimal";
return displayMode;
case "hexadecimal":
displayMode = "hexadecimal";
return displayMode;
case "binary":
displayMode = "binary";
return displayMode;
case "octal":
displayMode = "octal";
return displayMode;
default:
displayMode = "This should never be returned";
return displayMode;
}
}
/**
public static String displayPrint(int original){
switch(displayMode){
case "decimal":
return Integer.valueOf(original).toString();
case "hexadecimal":
return Integer.toHexString(original);
case "binary":
return Integer.toBinaryString(original);
case "octal":
return Integer.toOctalString(original);
}
*/
public static String displayPrint(float original){
int binoct = Math.toIntExact(Float.valueOf(original).longValue());
switch(displayMode){
case "decimal":
return Float.valueOf(original).toString();
case "hexadecimal":
return Float.toHexString(original);
case "binary":
return Integer.toBinaryString(binoct);
case "octal":
return Integer.toOctalString(binoct);
default:
return "This should never be returned";
}
}
public static String displayPrint(double original){
//LOSS OF DATA IS POSSIBLE HERE
int binoct = Math.toIntExact(Double.valueOf(original).longValue());
switch(displayMode){
case "decimal":
return Double.valueOf(original).toString();
case "hexadecimal":
return Double.toHexString(original);
case "binary":
return Integer.toBinaryString(binoct);
case "octal":
return Integer.toOctalString(binoct);
default:
return "This should never be returned";
}
}
public static double unitter(double angle) {
if(unitsMode.equals("degrees")){
return Math.toRadians(angle);
}
else{
return angle;
}
}
public static String switchUnitsMode(){
if(unitsMode.equals("degrees")){
unitsMode = "radians";
return unitsMode;
}
else if (unitsMode.equals("radians")){
unitsMode = "degrees";
}
return unitsMode;
}

Console.println("The user input %s as a string", s);
Console.println("The user input %s as a integer", i);
Console.println("The user input %s as a d", d);
public static String switchUnitsMode(String mode){
if(mode.equals("degrees")){
unitsMode = "degrees";
}
else if (mode.equals("radians")){
unitsMode = "radians";
}
return unitsMode;
}
//not sure what a factorial function would take as parameter(s)
public static double factorial(){
double factoria = 0;
for(int i = 1; i <= display;i++){
factoria = factoria * i;
}
return factoria;
}
}
Loading