Tilted Forum Project Discussion Community  

Go Back   Tilted Forum Project Discussion Community > Interests > Tilted Technology


 
 
LinkBack Thread Tools
Old 02-20-2006, 01:52 PM   #1 (permalink)
Buffering.........
 
merkerguitars's Avatar
 
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
This is the main if/else statement i'm having the trouble with

//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..
merkerguitars is offline  
Old 02-20-2006, 02:30 PM   #2 (permalink)
Free Mars!
 
feelgood's Avatar
 
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;
	}
	}
You have a really bad nested statement here, I would suggest you to look at it closer and figure out where the brackets needs to be and where the condition check statement should be. That should solve your problem. A proper nested statement would look like this:

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..
feelgood is offline  
Old 02-20-2006, 04:40 PM   #3 (permalink)
Insane
 
AngelicVampire's Avatar
 
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;
That should work. Your braces are wrong and you are including comments (total sales > 300 etc) within else statements, else statements do not contain logic, they simply are the "all others case".

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;
is equivalent to:

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..
AngelicVampire is offline  
Old 02-21-2006, 10:46 AM   #4 (permalink)
Insane
 
Location: Vermont
Go get a text editor with syntax highlighting.
RAGEAngel9 is offline  
Old 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..
theFez is offline  
Old 02-21-2006, 08:57 PM   #6 (permalink)
Buffering.........
 
merkerguitars's Avatar
 
Location: Wisconsin...
Quote:
Originally Posted by theFez
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.
I noticed that after I got the second if/else statement working. Now it works perfect. Thanks All, here is my final code, its a little blogged up with comments but thats how my professor likes it.

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
merkerguitars is offline  
Old 02-22-2006, 04:26 PM   #7 (permalink)
Insane
 
AngelicVampire's Avatar
 
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;
}
Method 2:
Code:
if (condition)
{
    statement
}
I prefer Method 2, it takes more space but means if you want to check braces without an IDE its fairly easy.

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 ()
{

}
Also meaningless comments don't add anything, they can show that you know what you mean however

Code:
public class Lab3 
{ //main class
    public static void main(String[] args) 
    { //beginning of the main method
These comments realistically do not add anything to your comments, your marker will know what these are, to add them makes you look like a bit of a smart ass (commenting, overcommenting are fine however commenting the obvious can lead to markers marking you down because they think you are taking the piss... I have lost marks when we got told to comment because the marker said I was commenting too much, it was a simple calculator, there wasn't anything realistically needing commented).

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..
AngelicVampire is offline  
 

Tags
if or else, java, nested, problems, statement

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On



All times are GMT -8. The time now is 06:39 PM.

Tilted Forum Project

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Search Engine Optimization by vBSEO 3.6.0 PL2
© 2002-2012 Tilted Forum Project

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360