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

Quadratic Formula

Richard Innamorato
Greenhorn

Joined: Feb 19, 2011
Posts: 17
Hi everyone, I have been practicing Java with the Big Java book and one fo the exercises is to create a program that would calculate the solutions to the quadratic formula. I wrote the code but I am having troubles getting the right results. Can you guys take a look at and tell me where the mistake is?

Here is the program

Winston Gutkowski
Bartender

Joined: Mar 17, 2011
Posts: 8225
    
  23

Ricardo Figueredo wrote:Hi everyone, I have been practicing Java with the Big Java book and one fo the exercises is to create a program that would calculate the solutions to the quadratic formula. I wrote the code but I am having troubles getting the right results. Can you guys take a look at and tell me where the mistake is?

A little more information would be helpful. What results are you getting?

Also, you might want to look at this Thread, which seems to be based on the same exercise.

Winston


Isn't it funny how there's always time and money enough to do it WRONG?
Articles by Winston can be found here
Richard Innamorato
Greenhorn

Joined: Feb 19, 2011
Posts: 17
Sorry, I should have posted the results I am getting.

Here it is:



Thanks for the link. I reviewed the link and it gave me a couple of good ideas on how to modify my code. However, he is using a different implementation. The method I am having the first problem is getDiscriminant(), it should return something other than "0". I can't get the variable "bSquare" to have the value once the calculation is done. bSquare should be 25 when I call it in the printJob() method.

Thanks,

Richard
Campbell Ritchie
Sheriff

Joined: Oct 13, 2005
Posts: 39834
    
  28
You may be able to simplify that formula.
  • Never use pow(x, 2). Use x * x. Probably faster performance and more accurate.
  • Maybe you can permit the formula to accept negative discriminants, because the sqrt() method has a special way of dealing with them.
  • Look very closely at the hasSolution method and check whether you are looking at negative numbers or positive.
  • Don’t use == true or ==false. Simply delete == true throughout.
  • Winston Gutkowski
    Bartender

    Joined: Mar 17, 2011
    Posts: 8225
        
      23

    Campbell Ritchie wrote:
  • Don’t use == true or ==false. Simply delete == true throughout.

  • We should call this the "Ritchie Rule".

    Winston
    Richard Innamorato
    Greenhorn

    Joined: Feb 19, 2011
    Posts: 17
    Ritchie,

    thanks for the pointers, I deleted the ==true statements. I could deal with the negative values of the quadratic equation and displaying them but the exercise was to use the boolean type so it should return false if the discriminant is negative and provide a statement that there is no real solution to this equation.

    My main problem right now is accessing the variables inside the method:




    Using the printJob. If I can access these variables, then the rest of the program should run find. I added bSquare, result, and discriminant as public variables but it is not working.

    Thanks,

    Richard.
    fred rosenberger
    lowercase baba
    Bartender

    Joined: Oct 02, 2003
    Posts: 11479
        
      16

    Ricardo Figueredo wrote: but it is not working.

    Again, this tells us nothing. HOW is it not working? What is it doing? What do you think it should do?


    What variables in here do you want to access? What can't you access? Folks here are really trying to help you, but you have to make it easy on them, or they'll get frustrated and walk away.


    There are only two hard things in computer science: cache invalidation, naming things, and off-by-one errors
    Campbell Ritchie
    Sheriff

    Joined: Oct 13, 2005
    Posts: 39834
        
      28
    If the exercise said to pass booleans for negative discriminants, then my suggestion about NaN won’t help.
    You cannot access variables inside a method from outside the method.
    The discriminant is b² - 4ac, not √(b² - 4ac).
    You might do well to make a, b and c instance fields of your class. You can make discriminant a (derived instance) field, too.
    Campbell Ritchie
    Sheriff

    Joined: Oct 13, 2005
    Posts: 39834
        
      28
    Winston Gutkowski wrote: . . . We should call this the "Ritchie Rule".

    Winston
    No, that is, “there is no such thing as a 2D array”
    Campbell Ritchie
    Sheriff

    Joined: Oct 13, 2005
    Posts: 39834
        
      28
    I see you already have those fields. All those fields ought to have private access. Sorry for missing that.
    Richard Innamorato
    Greenhorn

    Joined: Feb 19, 2011
    Posts: 17
    Fred,

    the answer to your question was posted in my second post but I will repeat it to make it easier for those trying to help me.

    This is the results I am getting:



    I am using the printJob method to get this results:



    These variables' values are calculated in the getDiscriminant() method:



    So once printJob() calls bSquare it should be 25 (5 * 5), result should be 25-(4*1*3) = 13.




    Richard Innamorato
    Greenhorn

    Joined: Feb 19, 2011
    Posts: 17
    Ritchie,

    you are right about the discriminant. The extra line computing the rootsquare should be in getSolution method. I have updated both methods. like this:



    and:



    However, I still can't access those variables.
    James Boswell
    Bartender

    Joined: Nov 09, 2011
    Posts: 1030
        
        5

    Shouldnt there be a call somewhere to the getDiscriminant() method?
    Richard Innamorato
    Greenhorn

    Joined: Feb 19, 2011
    Posts: 17
    James,

    there is a method call but it was in the main method.

    Richard Innamorato
    Greenhorn

    Joined: Feb 19, 2011
    Posts: 17
    James,

    you were right. I changed the main method to call this method and it worked. I needed to call the method to get the results. I feel like an idiot. Thanks!
    James Boswell
    Bartender

    Joined: Nov 09, 2011
    Posts: 1030
        
        5

    Are my eyes deceiving me? I can't see this call? No call to the getDiscriminant() certainly explains the output you are getting.
    James Boswell
    Bartender

    Joined: Nov 09, 2011
    Posts: 1030
        
        5

    Ricardo

    I would make the getDiscriminant() method private, rename it to setDiscriminant() and call it as the last line of your constructor.

    Glad I could help.
     
    I agree. Here's the link: http://aspose.com/file-tools
     
    subject: Quadratic Formula