wood burning stoves*
The moose likes Beginning Java and the fly likes problematic run-time errors Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login

Win a copy of Murach's Java Servlets and JSP this week in the Servlets forum!
JavaRanch » Java Forums » Java » Beginning Java
Bookmark "problematic run-time errors" Watch "problematic run-time errors" New topic

problematic run-time errors

Matt Riddoch

Joined: Nov 08, 2008
Posts: 2
I am as green as can be w/code, and have been kind of thrown in the fire with an assignment from school. It has been turned in, but I would like to better understand what issues I am running into. When I enter an integer for tax rate it loops output. When a decimal is entered this:

java.lang.NumberFormatException: For input string: "0.5"
at java.lang.NumberFormatException.forInputString(NumberFormatException.
at java.lang.Integer.parseInt(Integer.java:477)
at java.lang.Integer.parseInt(Integer.java:518)
at Project.AccountIn(Project3.java:63)
at Project.appMain(Project3.java:40)
at Project3.main(Project3.java:17)

Sorry for the length but here is the problematic code: (A BIG THANKS!!)

[edit]Add code tags. CR[/edit]
[ November 09, 2008: Message edited by: Campbell Ritchie ]
Henry Wong

Joined: Sep 28, 2004
Posts: 18509

The Integer class is for integers -- which is for whole numbers. "1.5" is not a whole number, hence, not an integer.

[ November 08, 2008: Message edited by: Henry Wong ]

Books: Java Threads, 3rd Edition, Jini in a Nutshell, and Java Gems (contributor)
Rob Spoor

Joined: Oct 27, 2005
Posts: 19651

And please Use Code Tags.

How To Ask Questions How To Answer Questions
fred rosenberger
lowercase baba

Joined: Oct 02, 2003
Posts: 11153

many languages distinguish between integers (numbers with no fractional part) and floating point decimal numbers (numbers WITH a fractional part, although the fractional part may be zero - 5.0, for example). In fact, there are even different types for each of those, depending on how big a number you need to store vs. how much memory they use

I don't know the reason why they do this, but I assume it has to do with memory from back when memory was EXPENSIVE (my father talked about a computer Bell Labs bought where memory was $1 million for 1 megabyte).

In any case, as Henry has pointed out, you are using the "Integer" method to parse a string. Since it is expecting an integer to be represented in the string, it doesn't know how to handle a decimal point. Just like it wouldn't know how to handle "fred". If you want to parse a floating point, you need to use a different class than the Integer and it's parstInt() method.

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

Joined: Oct 13, 2005
Posts: 37950
I always thought it is because it means you can store different numbers in different formats, eg
  • Two's complement-Java int, long, short, byte.
  • Unsigned binary-Java char, C++ unsigned int, C# uint
  • IEEE754-Java float and double
  • Something else, eg C# decimal.
  • And that means that arithmetic on different kinds of numbers can be done differently with different precision, etc.
    Campbell Ritchie

    Joined: Oct 13, 2005
    Posts: 37950
    Originally posted by Rob Prime:
    And please Use Code Tags.
    I have added the tags, so you can see how much better the code looks. By the way: you are using an unusual indentation convention: your code should start farther to the right than the {}.

    And (sorry I hadn't noticed it's your first post) welcome to JavaRanch
    Matt Riddoch

    Joined: Nov 08, 2008
    Posts: 2
    Wow, thanks for the outpouring of help!! I am educating myself on the code tag issue, as I hope to become a regular contributor. I will crunch some of this info and hope for some better results!
    Campbell Ritchie

    Joined: Oct 13, 2005
    Posts: 37950
    You are welcome
    It is sorta covered in the JavaRanch Style Guide.
    subject: problematic run-time errors
    Similar Threads
    problem with parse int method
    urgent help needed for assignment
    my last question for this program.
    how to accept strings and values in invoice textfields