02-20-2006, 01:52 PM | #1 (permalink) |
Buffering.........
Location: Wisconsin...
|
[java] nested if/else statement problems
Ok i'm having a little trouble with nested if/else statements, I get an error saying 'else' without 'if' at line 71, here is my code. It has to be in a similar format that I have to get full credit.
Code:
package lab3; /** * <p>Title: Lab 3 Assignment</p> * * <p>Description: Hourly Wage Calculator</p> * * <p>Copyright: Copyright (c) 2006</p> * * <p>Company: UW-RF</p> * * @author Eric Merker * @version 1.0 */ import javax.swing.*; import java.text.*; public class Lab3 { public static void main(String[] args) { Lab3 lab3 = new Lab3(); final double standardhours = 40; final double taxrate =.10; final double hourlywage = 8.00; double overtimerate; overtimerate = hourlywage * 1.5; String employeeName; double hoursworked; String hoursworkedst; double totalsales; String totalsalesst; double overtimehours; double overtimepay; double comission; double paywithcomission; double salestax; double taxesowed; double nonOtpay; double totalpay; //total pay before taxes double takehomepay; DecimalFormat df = new DecimalFormat("0.00"); employeeName=JOptionPane.showInputDialog (null, "What is the Employee's Name?" ); hoursworkedst=JOptionPane.showInputDialog (null, "How many hours has the employee worked?" ); totalsalesst=JOptionPane.showInputDialog(null, "What is the total sales?"); hoursworked=Double.parseDouble(hoursworkedst); totalsales=Double.parseDouble(totalsalesst); //if statements to figure out OT pay and all that fun shiat if (hoursworked > standardhours); overtimehours = hoursworked - standardhours; //figures out how much overtime hours where worked overtimepay = overtimerate * overtimehours; //calculates overtime pay using overtime hours and the hourly //overtime rate nonOtpay = standardhours * hourlywage; //figures out the standard non overtime pay totalpay = nonOtpay + overtimepay; //adds Overtimepay with the non Overtime Pay to calculate a total pay without //comission or taxes deducted //if statement to figure out how much comission is owed from sales if (totalsales < 100 && totalsales > 1.00); { { comission = totalsales * .05; } else if { (totalsales >= 100 && totalsales < 300); { totalsales * .10 = comission; } else (totalsales >=300) comission = totalsales * .15; } } //math to figure out taxes owed and the total with comission and the with taxes deducted paywithcomission = totalpay + comission; //adds the comission pay plus the standard OT/nonOTpay taxesowed = paywithcomission * taxrate; // takes the total pay and multiplys it by the taxrate to //figure out how much taxes need to be deducted takehomepay = paywithcomission - taxesowed; // subtracts the taxes owed from the totalpay to figure out // the take home pay //decimal format class to make the all money values to output to the hundreth place System.out.println("**************************************************************"); System.out.println(" Welcome to MyJava Burgers "); System.out.println("**************************************************************"); System.out.println(""); System.out.println("Employee Name:" +employeeName); System.out.println("Number of Hours worked:" +hoursworkedst); System.out.println("Sales Volume:" +totalsales); System.out.println("**************************************************************"); System.out.println(""); System.out.println("Total of Regular Pay:" +df.format(nonoTpay)); System.out.println("Overtime Pay:" +df.format(overtimepay)); System.out.println("Commission: " +df.format(commission)); System.out.println("Taxes:" +df.format(taxesowed)); System.out.println("Take Home Pay:" +df.format(totalhomepay)); System.out.println(""); System.out.println("**************************************************************"); }//end of main method }//end of Lab3 class //if statement to figure out how much comission is owed from sales if (totalsales < 100 && totalsales > 1.00); { { comission = totalsales * .05; } else if { (totalsales >= 100 && totalsales < 300); { totalsales * .10 = comission; } else (totalsales >=300) comission = totalsales * .15; } }
__________________
Donate now! Ask me How! Please use the search function it is your friend. Look at my mustang please feel free to comment! http://www.tfproject.org/tfp/showthread.php?t=26985 Last edited by merkerguitars; 02-20-2006 at 02:36 PM.. |
02-20-2006, 02:30 PM | #2 (permalink) |
Free Mars!
Location: I dunno, there's white people around me saying "eh" all the time
|
When posting crapload of code like that, format it properly using [ code ] tags
You don't need a ; at the end of the if statement line if (hoursworked > standardhours);<--- Code:
if (totalsales < 100 && totalsales > 1.00); { { comission = totalsales * .05; } else if { (totalsales >= 100 && totalsales < 300); { totalsales * .10 = comission; } else (totalsales >=300) comission = totalsales * .15; } } Code:
if(something=0) { something here; } else if(something<0) { something here; } else { something here; }
__________________
Looking out the window, that's an act of war. Staring at my shoes, that's an act of war. Committing an act of war? Oh you better believe that's an act of war Last edited by feelgood; 02-20-2006 at 02:32 PM.. |
02-20-2006, 04:40 PM | #3 (permalink) |
Insane
|
Code:
if (totalsales < 100 && totalsales > 1.00); <------ error 1 { { < ---- Error 2 comission = totalsales * .05; } else if { <----- Error 3: (totalsales >= 100 && totalsales < 300); <----- error 4 { totalsales * .10 = comission; } else (totalsales >=300) comission = totalsales * .15; } } What you probably want is: Code:
if (totalsales < 100 && totalsales > 1.00) comission = totalsales * .05; else if(totalsales >= 100 && totalsales < 300) totalsales * .10 = comission; else comission = totalsales * .15; If you want to use braces, you shouldn't need to however, an if statement without braces automatically includes the next line (in this case an if statement such that we have multiple lines), this would be wrong: Code:
if (some condition) Statement1; Statement2; Code:
if (some condition) { Statement1; } Statement2; Code:
if (totalsales < 100 && totalsales > 1.00) { comission = totalsales * .05; } else { if(totalsales >= 100 && totalsales < 300) { totalsales * .10 = comission; } else { comission = totalsales * .15; } } Last edited by AngelicVampire; 02-20-2006 at 04:44 PM.. |
02-21-2006, 08:40 PM | #5 (permalink) |
Crazy
Location: here and there
|
this has nothing to do with if/else statements. it has to do with not knowing the syntax of the language.
If you look at your very first 'if' statement where you were calculating overtime hours, you got that wrong too.
__________________
# chmod 111 /bin/Laden Last edited by theFez; 02-21-2006 at 08:44 PM.. |
02-21-2006, 08:57 PM | #6 (permalink) | |
Buffering.........
Location: Wisconsin...
|
Quote:
Code:
package lab3; /** * <p>Title: Lab 3 Assignment</p> * * <p>Description: Hourly Wage Calculator</p> * * <p>Copyright: Copyright (c) 2006</p> * * <p>Company: UW-RF</p> * * @author Eric Merker * @version 1.0 */ import javax.swing.*; //imported package to use the joption pane method import java.text.*; // imported package to use the decimalformat method public class Lab3 { //main class public static void main(String[] args) { //beginning of the main method Lab3 lab3 = new Lab3(); final double standardhours = 40; //set as a final because this variable will NEVER change final double taxrate =.10; //set as a final because this variable will also NEVER change final double hourlywage = 8.00; // set as a final because all workers will have the same hourly wage double overtimerate; //double used in the calculation below overtimerate = hourlywage * 1.5; //used to calculate the overtime pay, I could of done the math in my head //but I did this if I ever wanted to change the hourly wage, I would not have to rethink this statement. String employeeName; //string that is used when the user is asked for the employees name, since this is // does not need to be a double, float, etc due to it being alpanumeric characters double hoursworked; //used for when hoursworkedst is converted into a double String hoursworkedst; //needed since java can only get input from a string double totalsales; //used for when totalsalesst is converted into a double String totalsalesst; //needed since java can only get input from a string double overtimehours; //double used to retain the number of overtime hours worked double overtimepay; //double used to retain the value of overtime pay double comission; //double used to retain the value of how much comission is made double paywithcomission; //double used that contails the normal pay + comission pay double salestax; //double used that retains sales tax value that is calculated at line 84 double taxesowed; //finds out how much taxes are taken out of pay with ot + normal non ot pay and with comission sales double nonOtpay; //used for calculating how much employeed gets paid for up to 40 hours double totalpay; //total pay before taxes double takehomepay; //used for calculating how much pay is taken home. //decimal format class to make the all money values to output to the hundreth place DecimalFormat df = new DecimalFormat("0.00"); employeeName=JOptionPane.showInputDialog (null, "What is the Employee's Name?" ); //gets the Employee's name via input of a Joption //pane window hoursworkedst=JOptionPane.showInputDialog (null, "How many hours has the employee worked?" ); //gets the number of hours worked via //Joptionpane window totalsalesst=JOptionPane.showInputDialog(null, "What is the total sales?"); //gets the number of total sales via Joptionpane window hoursworked=Double.parseDouble(hoursworkedst);//converts hoursworkedst into a double called hoursworked totalsales=Double.parseDouble(totalsalesst); //converts totalsales st into a double called totalsales //if statements to figure out OT pay if (hoursworked > standardhours) { //if hours worked is greater than 40 do the following. overtimehours = hoursworked - standardhours; //figures out how much overtime hours were worked overtimepay = overtimerate * overtimehours; //calculates overtime pay using overtime hours and the hourly nonOtpay = standardhours * hourlywage; //figures out the standard non overtime pay totalpay = nonOtpay + overtimepay; }//adds Overtimepay with the non Overtime Pay to calculate a total pay without else //used to calculate pay if hours are >=40 (non overtime pay) {nonOtpay = hoursworked * hourlywage; //calculates the non Overtime pay overtimepay = overtimerate *0; //sets overtime pay to zero since later on we will have to use overtimepay totalpay = nonOtpay; } //used to initialize totalpay //if statement to figure out how much comission is owed to employee from sales if (totalsales < 100 && totalsales > 1.00) { comission = totalsales * .05; } else { if(totalsales >= 100 && totalsales < 300) { comission =totalsales * .10; } else { comission = totalsales * .15; } } //math to figure out taxes owed and the total with comission and the with taxes deducted paywithcomission = totalpay + comission; //adds the comission pay plus the standard OT/nonOTpay taxesowed = paywithcomission * taxrate; // takes the total pay and multiplys it by the taxrate to //figure out how much taxes need to be deducted takehomepay = paywithcomission - taxesowed; // subtracts the taxes owed from the totalpay to figure out // the take home pay //prints out the following to the operator System.out.println("**************************************************************"); System.out.println(" Welcome to MyJava Burgers "); System.out.println("**************************************************************"); System.out.println(""); System.out.println("Employee Name:" +employeeName); //prints out the employee name (string) System.out.println("Number of Hours worked:" +hoursworkedst); //prints out the hours worked System.out.println("Sales Volume:" +totalsales); //prints out the total sales System.out.println("**************************************************************"); System.out.println(""); System.out.println("Total of Regular Pay: "+df.format(nonOtpay)); //used df.format to make sure it goes to the hundreth of a dollar System.out.println("Overtime Pay: "+df.format(overtimepay)); //ditto System.out.println("Commission: "+df.format(comission)); //ditto System.out.println("Taxes: "+df.format(taxesowed)); //ditto System.out.println("Take Home Pay: "+df.format(takehomepay)); //ditto System.out.println(""); System.out.println("**************************************************************"); }//end of main method }//end of Lab3 class /* things learned in this assignment how to properly use {}'s for the if/else statements (special thanks to AngelicVampire @ www.tfproject.org) { always follows before the second if ; is not needed after the if statement. */
__________________
Donate now! Ask me How! Please use the search function it is your friend. Look at my mustang please feel free to comment! http://www.tfproject.org/tfp/showthread.php?t=26985 |
|
02-22-2006, 04:26 PM | #7 (permalink) |
Insane
|
Much better, always keep your braces consistant, mixing can get confusing, (also normally loses you "style" marks on practicals), also remember to pick a style of if and stick with it:
Method 1: Code:
if (condition){ statements; } Code:
if (condition) { statement } Final thing would be comments, while nothing is wrong with your current style it does make the code harder to read where I work we always keep to 1tab beyond the longest line in a section of code: Code:
statement1; // Consistant comment placement AMuchLongerStatement; // Means that the reader can ignore these statement2; // and read the code without mixing the two Section2Statement; // Comments have moved in for second logical section statement3; // Stil retains much more readability. //*************** A Section break **************/ // Description of what this bit does, normally used on methods // Can include descriptions of purpose io variables //******************************************/ public void randomFunction () { } Code:
public class Lab3 { //main class public static void main(String[] args) { //beginning of the main method Final point is variable naming, when using multiple words (you have descriptive names, thats good, too often you see nothing but a, b and d, you should really capitalise or split the words, standardHours,standard_hours or StandardHours is more readable than standardhours and the cost is virtually none in terms of space/effort. Sorry for lecturing you, both parents are teachers as is my brother and my dad was a programmer for years... programming discussions round the table happen often! Last edited by AngelicVampire; 02-22-2006 at 04:28 PM.. |
Tags |
if or else, java, nested, problems, statement |
|
|