Trying to sentinel loop this program.
Posted
by roger34
on Stack Overflow
See other posts from Stack Overflow
or by roger34
Published on 2010-06-07T00:58:37Z
Indexed on
2010/06/07
1:12 UTC
Read the original article
Hit count: 334
Okay, I spent all this time making this for class but I have one thing that I can't quite get: I need this to sentinel loop continuously (exiting upon entering x) so that the
System.out.println("What type of Employee? Enter 'o' for Office " +
"Clerical, 'f' for Factory, or 's' for Saleperson. Enter 'x' to exit." );
line comes back up after they enter the first round of information. Also, I can't leave this up long on the (very) off chance a classmate might see this and steal the code. Full code following:
import java.util.Scanner;
public class Project1 {
public static void main (String args[]){
Scanner inp = new Scanner( System.in );
double totalPay;
System.out.println("What type of Employee? Enter 'o' for Office " +
"Clerical, 'f' for Factory, or 's' for Saleperson. Enter 'x' to exit." );
String response= inp.nextLine();
while (!response.toLowerCase().equals("o")&&!response.toLowerCase().equals("f")
&&!response.toLowerCase().equals("s")&&!response.toLowerCase().equals("x")){
System.out.print("\nInvalid selection,please enter your choice again:\n");
response=inp.nextLine();
}
char choice = response.toLowerCase().charAt( 0 );
switch (choice){
case 'o':
System.out.println("Enter your hourly rate:");
double officeRate=inp.nextDouble();
System.out.println("Enter the number of hours worked:");
double officeHours=inp.nextDouble();
totalPay = officeCalc(officeRate,officeHours);
taxCalc(totalPay);
break;
case 'f':
System.out.println("How many Widgets did you produce during the week?");
double widgets=inp.nextDouble();
totalPay=factoryCalc(widgets);
taxCalc(totalPay);
break;
case 's':
System.out.println("What were your total sales for the week?");
double totalSales=inp.nextDouble();
totalPay=salesCalc(totalSales);
taxCalc(totalPay);
break;
}
}
public static double taxCalc(double totalPay){
double federal=totalPay*.22;
double state =totalPay*.055;
double netPay = totalPay - federal - state;
federal =federal*Math.pow(10,2);
federal =Math.round(federal);
federal= federal/Math.pow(10,2);
state =state*Math.pow(10,2);
state =Math.round(state);
state= state/Math.pow(10,2);
totalPay =totalPay*Math.pow(10,2);
totalPay =Math.round(totalPay);
totalPay= totalPay/Math.pow(10,2);
netPay =netPay*Math.pow(10,2);
netPay =Math.round(netPay);
netPay= netPay/Math.pow(10,2);
System.out.printf("\nTotal Pay \t: %1$.2f.\n", totalPay);
System.out.printf("State W/H \t: %1$.2f.\n", state);
System.out.printf("Federal W/H : %1$.2f.\n", federal);
System.out.printf("Net Pay \t: %1$.2f.\n", netPay);
return totalPay;
}
public static double officeCalc(double officeRate,double officeHours){
double overtime=0;
if (officeHours>=40)
overtime = officeHours-40;
else
overtime = 0;
if (officeHours >= 40)
officeHours = 40;
double otRate = officeRate * 1.5;
double totalPay= (officeRate * officeHours) + (otRate*overtime);
return totalPay;
}
public static double factoryCalc(double widgets){
double totalPay=widgets*.35 +300;
return totalPay;
}
public static double salesCalc(double totalSales){
double totalPay = totalSales * .05 + 500;
return totalPay;
}
}
© Stack Overflow or respective owner