posted 9 years ago
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.
java:48)
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 ]
java.lang.NumberFormatException: For input string: "0.5"
at java.lang.NumberFormatException.forInputString(NumberFormatException.
java:48)
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 ]
posted 9 years ago
And please Use Code Tags.
SCJP 1.4 - SCJP 6 - SCWCD 5 - OCEEJBD 6 - OCEJPAD 6
How To Ask Questions How To Answer Questions
posted 9 years ago
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.
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
posted 9 years ago
I always thought it is because it means you can store different numbers in different formats, egTwo'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
Sheriff
Posts: 57812
178
posted 9 years ago
And (sorry I hadn't noticed it's your first post) welcome to JavaRanch
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 {}.Originally posted by Rob Prime:
And please Use Code Tags.
And (sorry I hadn't noticed it's your first post) welcome to JavaRanch

Matt Riddoch
Greenhorn
Posts: 2
