aspose file tools*
The moose likes Beginning Java and the fly likes Logic Errors Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Beginning Java
Bookmark "Logic Errors" Watch "Logic Errors" New topic
Author

Logic Errors

Greg Roberts
Ranch Hand

Joined: Feb 05, 2005
Posts: 72
How frustrating are logic errors? The program compiles, but does not spit out the expected answers. I'm working on a simple payroll calculator for a Java class I'm taking, and instead of getting the numbers I'm expecting, I'm getting all zero's. We're covering if and switch statements right now, so that's what this project centers around. The output for grossPay and netPay are 0.0 and 0.0. Other than that everything works. I'm assuming my problem is in the if statements. Can anyone spot the logic errors?

Also, in the default constructor, how do I set the char to a default value, similiar to a null string?

Here's the class:


And here's the driver:


Greg Roberts<br />CIS Student<br />University of West Florida
Ernest Friedman-Hill
author and iconoclast
Marshal

Joined: Jul 08, 2003
Posts: 24187
    
  34

A big hint: put a line like

System.out.println("In grossPay")

in the private grossPay() method, and then run your program again.


[Jess in Action][AskingGoodQuestions]
David Harkness
Ranch Hand

Joined: Aug 07, 2003
Posts: 1646
If you want a "null" for a char, try '\u0000'.
Greg Roberts
Ranch Hand

Joined: Feb 05, 2005
Posts: 72
Originally posted by Ernest Friedman-Hill:
A big hint: put a line like

System.out.println("In grossPay")

in the private grossPay() method, and then run your program again.


By doing that I realized I'm not calling the grossPay() and netPay() methods. In the project requirements it says the methods need to be private (this may be a typo, I'll ask).

I changed the methods to public and had the driver call them and it spits out computed numbers. But if they do have to be private is there any way to call those methods from the driver?
David Harkness
Ranch Hand

Joined: Aug 07, 2003
Posts: 1646
Originally posted by Greg Roberts:
But if they do have to be private is there any way to call those methods from the driver?
Not from another class, no. Can you think of any methods in Employee from which you can call those methods that would make sense?
Greg Roberts
Ranch Hand

Joined: Feb 05, 2005
Posts: 72
Okay, I made some changes and I figured out how to use them while still keeping them private. Here are the changes I made to the display() method:



I also changed the grossPay() and netPay() so they return a double, instead of them being void methods.
[ March 07, 2005: Message edited by: Greg Roberts ]
Greg Roberts
Ranch Hand

Joined: Feb 05, 2005
Posts: 72
Originally posted by David Harkness:
If you want a "null" for a char, try '\u0000'.


Tried that, got 4 errors for that alone!

illegal escape character
unclosed character literal (2)
';' expected
David Harkness
Ranch Hand

Joined: Aug 07, 2003
Posts: 1646
Originally posted by Greg Roberts:
Tried that, got 4 errors for that alone!

illegal escape character
unclosed character literal (2)
';' expected
Hmm, the JavaDocs show '\u0000' as being the value of Character.MIN_VALUE. You used zeros and not capital-Os, right?
Greg Roberts
Ranch Hand

Joined: Feb 05, 2005
Posts: 72
Yeah, I used zero's. Compiler didn't like it. What would you normally use in a default constructor for a char variable?
Russ Ray
Ranch Hand

Joined: Feb 11, 2003
Posts: 52
Greg:

I don't know if you have solved your problem or not, but I made one change and had your program running. The only thing I did was move the call to the grossPay() and netPay() methods inside the getGrossPay() and getNetPay() methods, respectively.

I think you logic issue is naming the the two methods as "calculateGrossPay" and "calculateNetPay".

Everything else seems to work.

Best of luck,

Russ
David Harkness
Ranch Hand

Joined: Aug 07, 2003
Posts: 1646
Originally posted by Greg Roberts:
What would you normally use in a default constructor for a char variable?
Since all instance fields are initialized by the JVM (chars get '\u0000'), I'd remove the initialization of it from the constructor.

Just to test, I added the following line to one of my classes:and it compiled fine using JDK 1.4.2_05. I have no idea why javac isn't liking it on your end.
Surasak Leenapongpanit
Ranch Hand

Joined: May 10, 2002
Posts: 341

Tried that, got 4 errors for that alone!

illegal escape character
unclosed character literal (2)
';' expected


What is your code?
You may foggot ';' at the end of expression.
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Logic Errors