/**
* This calculates the tip.
*
* @Laura
* @1.0
*/
import java.util.*;
import java.lang.Integer.*;
import java.lang.Double.*;
public class TipCalculator
{
public static void main(String[] args) {
Scanner s = new Scanner(System.in); //initializing variables
String billS = ""; //variables with an S at the end are the String versions (user inputted)
String tipPercentS = "";
String peopleS = "";
String choiceS = "";
int people = 0;
double bill = 0.0;
double tipPercent = 0.0;
double tip = 0.0;
double total = 0.0;
double splitBill = 0.0;
int choice = 1;
while (choice == 1) { //while loop to play again or not
System.out.print("Enter the value of the bill (don't enter the dollar sign): "); //prompts for bill
billS = s.nextLine();
while (!checkIfStringIsDouble(billS)) { //checks if bill price inputted is a double
System.out.print("That is not a valid answer. Enter the value of the bill (don't enter the dollar sign): "); //re-prompts for bill
billS = s.nextLine();
}
System.out.print("Enter the percentage you would like to tip (don't enter the percent sign): "); //prompts for tip percentage
tipPercentS = s.nextLine();
while (!checkIfStringIsDouble(tipPercentS)) { //checks if percent inputted is a double
System.out.print("That is not a valid answer. Enter the percentage you would like to tip (don't enter the percent sign): "); //re-prompts for tip
tipPercentS = s.nextLine();
}
bill = Double.parseDouble(billS); //converts string input to a double
tipPercent = Double.parseDouble(tipPercentS);
tip = (tipPercent/100) * bill; //calculates tip
tip = Math.round(tip * 100.0)/100.0; //rounds tip (if needed)
total = tip + bill;
System.out.println("The tip is $" + tip + "."); //outputs tip
System.out.println("The total price of the bill is $" + total + "."); //outputs total price
System.out.print("Enter the number of people you're splitting the bill with: ");
peopleS = s.nextLine();
while (!checkIfStringIsInt(peopleS)) { //checks if number of people inputted is an int
System.out.print("That is not a valid answer. Enter the number of people you're splitting the bill with: ");
peopleS = s.nextLine();
}
people = Integer.parseInt(peopleS);
splitBill = total/people;
splitBill = Math.round(splitBill * 100.0)/100.0; //rounds the bill to the nearest hundreth
System.out.println("Each person has to pay $" + splitBill + ".");
System.out.print("Would you like to calculate another tip? Enter 1 to do it again, enter 2 to stop: "); //keep going feature
choiceS = s.nextLine();
while (!choiceS.equals("1") && !choiceS.equals("2")) { //checks if the user input is a one or a two
System.out.print("That is not a valid answer. Would you like to calculate another tip? Enter 1 to do it again, enter 2 to stop: ");
choiceS = s.nextLine();
}
choice = Integer.parseInt(choiceS);
}
System.out.println("Program terminated.");
}
public static boolean checkIfStringIsDouble(String s) {
try {
Double.parseDouble(s);
} catch (Exception e) { //evaluates to false if not a Double
return false;
}
return true;
}
public static boolean checkIfStringIsInt(String s) {
try {
Integer.parseInt(s);
} catch (NumberFormatException e) { //evaluates to false if not an Int
return false;
}
return true;
}
}
Be the first to comment
You can use [html][/html], [css][/css], [php][/php] and more to embed the code. Urls are automatically hyperlinked. Line breaks and paragraphs are automatically generated.