![]() |
|
|
#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.. |
|
|
|
|
#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.. |
|
|
|
|
#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.. |
|
|
|
|
#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.. |
|
|
|
|
#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 |
|
|
|
|
|
#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 |
|
|