Math Tools
import java.util.Scanner;
/**
* Created by Sahil Pattni on 31-Jan-17.
*/
public class MathTools
{
public static double absoluteValue(double n)
{
if (n < 0)
return n * -1;
else
return n;
}
public static double power(double base, int exponent)
{
double answer = base;
if (exponent == 0)
answer = 1;
else if (exponent < 0)
{
for (int i = 1; i < exponent * -1; i++)
answer *= base;
answer = 1/answer;
}
else
{
for (int i = 1; i < exponent; i++)
answer *= base;
}
return answer;
}
public static double nthRoot(double value, int root)
{
double answer = -1;
double initialGuess;
double nextGuess;
double difference = 100;
double tolerance = 0.000000001;
if (value == 0 || root == 0)
answer = 0;
else
{
if (root > 0)
initialGuess = value;
else
initialGuess = 1.0/value;
nextGuess =((1.0/(double) root)*((double)root - 1.0))*(initialGuess)+(value/(power(initialGuess,(root-1))));
while (difference > tolerance)
{
nextGuess = (1.0 / root) * ((root - 1) * (initialGuess) + (value / power(initialGuess, root - 1)));
difference = absoluteValue(nextGuess - initialGuess);
initialGuess = nextGuess;
}
answer = nextGuess;
}
return answer;
}
public static String scientificNotation(double n)
{
String number = Double.toString(n);
String answer = "Oops, something went wrong with the method scientificNotation";
int movementCounter = 0;
n = ((int)(n*1000000))/1000000.0;
if(absoluteValue(n) < 1)
{
for (int i = 0; i < number.length(); i++)
{
if((number.charAt(i) != '0') && (number.charAt(i) != '.'))
{
movementCounter += -1*(i-1);
System.out.println(number);
number = number.substring(i,i+1)+"."+number.substring(i+1,number.length());
System.out.println(number);
answer = ""+number;
break;
}
}
}
else if (n >= 10)
{
for (int i = 0; i < number.length(); i++)
{
if (number.charAt(i) == '.')
{
movementCounter += i-1;
number = number.substring(0, i) + number.substring(i+1, number.length());
number = number.substring(0,1) + "." + number.substring(1, number.length());
answer = ""+number;
break;
}
}
}
else
{
answer = ""+n;
}
answer += " x 10^" + movementCounter;
return answer;
}
public static void main(String[] args) {
MathTools m = new MathTools();
boolean isDone = false;
Scanner s = new Scanner(System.in);
boolean toMenu = false;
while (!isDone)
{
System.out.println("Select a number from the menu choices:");
System.out.println("1 - Absolute Value");
System.out.println("2 - Power");
System.out.println("3 - Nth Root");
System.out.println("4 - Scientific Notation");
int userChoice = s.nextInt();
if(userChoice < 1 || userChoice > 4)
System.out.println("invalid Input");
else
{
if(userChoice == 1)
{
System.out.println("***Absolute Value***");
System.out.println("Enter the value");
System.out.println(absoluteValue(s.nextDouble()));
}
else if (userChoice == 2)
{
System.out.println("***Power***");
System.out.println("Enter the value");
double base = s.nextDouble();
System.out.println("Enter the exponent");
int expoent = s.nextInt();
System.out.println(power(base, expoent));
}
else if (userChoice == 3)
{
System.out.println("***Nth Root***");
System.out.println("Enter the value");
double value = s.nextDouble();
System.out.println("Enter the root");
int root = s.nextInt();
System.out.println(nthRoot(value, root));
}
else if (userChoice == 4)
{
System.out.println("***Scientific Notation***");
System.out.println("Enter in the value");
System.out.println(scientificNotation(s.nextDouble()));
}
}
System.out.println("Return to the menu? (yes/no)");
String answer = s.next();
if (answer.equalsIgnoreCase("no"))
isDone = true;
else if (!answer.equalsIgnoreCase("yes"))
System.out.println("Invalid Input");
}
System.out.println("Exiting MathToolsClient...");
}
}