Wages not calculating correctly

Discussion in 'Java' started by Simfonika Island, Apr 18, 2012.

  1. Hi

    My program is not calculating the wages correctly. Can somebody please
    tell me why???

    /*
    * PayCheck Program
    * This program computes an employee's wages for the week
    */
    import java.util.Scanner;
    import static java.lang.System.in;
    import static java.lang.System.out;

    class mainPayCheckProg
    {
    public static void main(String args[])
    {
    // create an instance of the class or object
    payCheckMethods aWage = new payCheckMethods();

    Scanner prompt_user = new Scanner(in);

    double payRate;
    double hours;
    double wages;
    int empNum;

    double max_hours = 40.0;
    double overtime = 1.5;

    out.print("Enter Employee Number: ");
    empNum = prompt_user.nextInt();
    out.print("Enter Pay Rate: ");
    payRate = prompt_user.nextDouble();
    out.print("Enter Hours Worked: ");
    hours = prompt_user.nextDouble();

    if (hours > max_hours)
    {
    wages = (max_hours * payRate) + (hours - max_hours) * payRate *
    overtime;
    }
    else
    {
    wages = max_hours * payRate;
    }

    out.print("Employee Number: ");
    out.println(empNum);
    out.print("Pay rate: ");
    out.println(payRate);
    out.print("Hours worked: ");
    out.println(hours);
    out.print("Wages: ");
    out.println(wages);
    }
    }
     
    Simfonika Island, Apr 18, 2012
    #1
    1. Advertising

  2. On Wed, 18 Apr 2012 13:53:39 -0700 (PDT), Simfonika Island
    <> wrote:

    >My program is not calculating the wages correctly. Can somebody please
    >tell me why???


    Yes, but you need to figure it out. I have given a big clue.

    [snip]

    >double overtime = 1.5;

    ^^^^^^^^
    Bad name. It is an overtime *rate*.

    [snip]

    >wages = max_hours * payRate;

    ^^^^^^^^^
    Why are using this variable here?

    [snip]

    If you are not indenting your code, you should.

    Sincerely,

    Gene Wirchenko
     
    Gene Wirchenko, Apr 18, 2012
    #2
    1. Advertising

  3. Simfonika Island

    Roedy Green Guest

    On Wed, 18 Apr 2012 13:53:39 -0700 (PDT), Simfonika Island
    <> wrote, quoted or indirectly quoted someone who
    said :

    >My program is not calculating the wages correctly. Can somebody please
    >tell me why???


    See http://mindprod.com/jgloss/ide.html

    If you single step trace you program, the problem should quickly
    reveal itself.

    If for some reason that is not possible, try running the program on
    paper calculating each line as written. Look for anomalous results.
    Make sure you compute what the program SAYS not what you intended.
    --
    Roedy Green Canadian Mind Products
    http://mindprod.com
    When you were a child, if you did your own experiment
    to see if it was better to put to cocoa into your cup first
    or the hot milk first, then you likely have the programmer gene..
     
    Roedy Green, Apr 19, 2012
    #3
  4. Simfonika Island

    Lew Guest

    Simfonika Island wrote:
    > My program is not calculating the wages correctly. Can somebody please
    > tell me why???
    >
    > /*
    > * PayCheck Program
    > * This program computes an employee's wages for the week
    > */
    > import java.util.Scanner;
    > import static java.lang.System.in;


    You don't need to specify the 'java.lang'.

    > import static java.lang.System.out;
    >
    > class mainPayCheckProg
    > {
    > public static void main(String args[])
    > {
    > // create an instance of the class or object
    > payCheckMethods aWage = new payCheckMethods();
    >
    > Scanner prompt_user = new Scanner(in);
    >
    > double payRate;
    > double hours;
    > double wages;
    > int empNum;
    >
    > double max_hours = 40.0;
    > double overtime = 1.5;
    >
    > out.print("Enter Employee Number: ");
    > empNum = prompt_user.nextInt();
    > out.print("Enter Pay Rate: ");
    > payRate = prompt_user.nextDouble();
    > out.print("Enter Hours Worked: ");
    > hours = prompt_user.nextDouble();
    >
    > if (hours > max_hours)
    > {
    > wages = (max_hours * payRate)
    > + (hours - max_hours) * payRate * overtime;
    > }
    > else
    > {
    > wages = max_hours * payRate;
    > }
    >
    > out.print("Employee Number: ");
    > out.println(empNum);
    > out.print("Pay rate: ");
    > out.println(payRate);
    > out.print("Hours worked: ");
    > out.println(hours);
    > out.print("Wages: ");
    > out.println(wages);
    > }
    > }


    Others have highlighted nicely the areas you ought to investigate closely. The
    example apparently is an academic exercise, and as such the key word is
    "exercise", meaning you actually have to work it yourself, and that's why the
    responses were somewhat indirect. They are helping you. Rest assured that if
    you follow through on their hints you will see the source of the difficulty.

    This is the universal phenomenon of computer programming, and a skill you will
    be glad you've mastered - that of digging to the root cause of what you observe.

    In this case you will come to an understanding of how variables convey
    information, or more precisely, data, or more precisely still for Java in
    particular, pointers to data and some primitives. Gene Wirchenko even gave you
    a starting point.

    Roedy's advice to paper-fake the program is a foundational practice.

    There's also precision of how you report an anomaly. There are useful
    debugging strategies that move you quickly to enlightenment and good software.
    The first is to report all observations surrounding the anomaly.

    For example, you observed that the "program is not calculating the wages
    correctly". OK. That's not a lot of analysis yet. What exactly is the program
    calculating (copy and paste actual output)? What did you expect?

    This is the heart of program testing - at its simplest, a pairing-up ("map")
    of preconditions and results (inputs and outputs). You type in "blahblah", the
    program prints "bleepbleep". You expected "bloopbloop". That begins to be
    specific.

    At that point, you see from the code how that "bleepbleep" got calculated as
    you trace how the variables transform their referenced structures. Or in your
    case, primitive 'double's.

    By the way, you should declare the class 'public'.

    Lastly, there are coding conventions. They differ, even to being opposite,
    between computer languages. They cover naming, spelling, indentation, all that
    boring (not really) crap. For Java they start with (and for a lot of folks,
    end with)
    <http://www.oracle.com/technetwork/java/codeconv-138413.html>

    Some of the conventions, like declaring arrays with the brackets after the
    type, or the variable, but not both, are in the Java Language Specification
    (JLS) itself.
    <http://docs.oracle.com/javase/specs/jls/se7/html/index.html>
    <http://docs.oracle.com/javase/specs/jls/se7/html/jls-10.html#jls-10.2>
    'We do not recommend "mixed notation" in an array variable declaration, where
    brackets appear on both the type and in declarators.'

    Generally you see the brackets on the type in Java code.

    --
    Lew
    Honi soit qui mal y pense.
    http://upload.wikimedia.org/wikipedia/commons/c/cf/Friz.jpg
     
    Lew, Apr 19, 2012
    #4
  5. Simfonika Island

    Roedy Green Guest

    On Thu, 19 Apr 2012 00:58:34 -0500, Leif Roar Moldskred
    <> wrote, quoted or indirectly quoted someone who
    said :

    >That's a terrible piece of advice to give to a beginning
    >programmer


    I disagree for four reasons:

    1. for a short piece of linear code, that is a very quick way to find
    a bug.

    2. It greatly helps a newbie to watch ANY program single stepping
    away, to get a feel for how programs behave, where they spend their
    time. You see thing that make you do a double take you would never
    notice any other way. Resolving them, nearly always as benign
    improves your intuition.

    3. his problem is a logic error, not a coding error. Paper tracing
    will uncover it, even if he is very weak in coding.

    4. I think our student is just getting started. Throwing academic or
    abstract concepts at him at this stage I think would be too
    overwhelming.
    --
    Roedy Green Canadian Mind Products
    http://mindprod.com
    When you were a child, if you did your own experiment
    to see if it was better to put to cocoa into your cup first
    or the hot milk first, then you likely have the programmer gene..
     
    Roedy Green, Apr 19, 2012
    #5
  6. On Thu, 19 Apr 2012 01:43:09 -0700, Roedy Green
    <> wrote:

    >On Thu, 19 Apr 2012 00:58:34 -0500, Leif Roar Moldskred
    ><> wrote, quoted or indirectly quoted someone who
    >said :
    >
    >>That's a terrible piece of advice to give to a beginning
    >>programmer

    >
    >I disagree for four reasons:
    >
    >1. for a short piece of linear code, that is a very quick way to find
    >a bug.


    Far faster to run through it himself.

    >2. It greatly helps a newbie to watch ANY program single stepping
    >away, to get a feel for how programs behave, where they spend their
    >time. You see thing that make you do a double take you would never
    >notice any other way. Resolving them, nearly always as benign
    >improves your intuition.


    It greatly helps hand-executing them.

    >3. his problem is a logic error, not a coding error. Paper tracing
    >will uncover it, even if he is very weak in coding.


    Yup.

    >4. I think our student is just getting started. Throwing academic or
    >abstract concepts at him at this stage I think would be too
    >overwhelming.


    He already has problems. Adding learning a debugger adds to
    that.

    Sincerely,

    Gene Wirchenko
     
    Gene Wirchenko, Apr 19, 2012
    #6
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Asad
    Replies:
    2
    Views:
    447
    Matt Berther
    Apr 27, 2004
  2. Sparky Arbuckle

    Calculating a Subtotal for Shopping Cart

    Sparky Arbuckle, Mar 6, 2005, in forum: ASP .Net
    Replies:
    6
    Views:
    1,647
    Sparky Arbuckle
    Mar 6, 2005
  3. Nathan Sokalski

    Calculating the width of an element

    Nathan Sokalski, May 30, 2005, in forum: ASP .Net
    Replies:
    1
    Views:
    466
    Herfried K. Wagner [MVP]
    May 30, 2005
  4. =?Utf-8?B?RGlmZmlkZW50?=

    Calculating the allocation size of an object

    =?Utf-8?B?RGlmZmlkZW50?=, Feb 3, 2006, in forum: ASP .Net
    Replies:
    0
    Views:
    444
    =?Utf-8?B?RGlmZmlkZW50?=
    Feb 3, 2006
  5. Replies:
    7
    Views:
    653
    rickman
    May 28, 2008
Loading...

Share This Page