Integer.parseInt, NumberFormatException
Hi,
I'm trying to convert numbers back and forth with parseInt and toHexString.
The number that I want to manipulate is 56789abc.
String str = Integer.toHexString(1450744508);
int i = 0;
try
i = Integer.parseInt(str, 16);
catch(NumberFormatException e)
e.printStackInfo();
I'm not sure why I'm getting NumberFormatException, since I think
56789ABC doesn't cross the line. It's not out of boundary.
Any suggestion or help really be appreciated.
Thanks in advance,
I don't know what you're talking about.
Integer.parseInt("56789ABC", 16);gives 1450744508
Works fine.
Similar Messages
-
Something's wrong with my Integer.parseInt...
hi...I think something's wrong with my code.
when i don't add the loop for(int s = h; s > 0; s--) { }, it's correct, but when i do, it shows:
java.lang.NumberFormatException: 27.0
at java.lang.Integer.parseInt(Integer.java:414)
at java.lang.Integer.parseInt(Integer.java:454)
at chiayaochien3.evaluate.find(evaluate.java:55)
at chiayaochien3.evaluate.operate(evaluate.java:48)
at chiayaochien3.Main.main(Main.java:10)
Exception in thread "main"
(But i am sure the things in Integer.parseInt is String...)
public class Main
public static void main(String[] args)
String[] data = {"3","+","12","*","27","/","1","-","6", "+", "222"};
String[] operStack = null;
String[] numStack = null;
myStack num1 = new myStack();
myStack num2 = new myStack();
myStack oper1 = new myStack();
myStack oper2 = new myStack();
int calculateNum1 = 0;
int calculateNum2 = 0;
String calculate1 = null;
String calculate2= null;
String oper = null;
double resultNum = 0;
double result = 0;
int operSize = 0;
int numSize = 0;
int h = 0;
for(int i = 0; i < data.length; i++) {
String f = data;
if(f.compareTo("+") == 0)
oper1.push(f);
else if(f.compareTo("-") == 0)
oper1.push(f);
else if(f.compareTo("*") == 0) {
oper1.push(f);
h++;
else if(f.compareTo("/") == 0){
oper1.push(f);
h++;
else if(f.compareTo("^") == 0){
oper1.push(f);
h++;
else
num1.push(f);
}//end of for
for(int s = h; s > 0; s--){
while(!oper1.isEmpty()) {
calculateNum1 = Integer.parseInt((String)num1.pop());
oper = (String)oper1.pop();
if(oper.compareTo("*") == 0) {
calculateNum2 = Integer.parseInt((String)num1.pop());
resultNum = calculateNum2*calculateNum1;
num2.push(String.valueOf(resultNum));
while(oper1.isEmpty() == false && num1.isEmpty() == false) {
oper2.push((String)oper1.pop());
num2.push((String)num1.pop());
}//end of while
}//end of if
else if(oper.compareTo("/") == 0) {
calculateNum2 = Integer.parseInt((String)num1.pop());
resultNum = calculateNum2/calculateNum1;
num2.push(String.valueOf(resultNum));
while(oper1.isEmpty() == false && num1.isEmpty() == false) {
oper2.push((String)oper1.pop());
num2.push((String)num1.pop());
}//end of while
}//end of else-if
else if(oper.compareTo("^") == 0) {
calculateNum2 = Integer.parseInt((String)num1.pop());
resultNum = Math.pow(calculateNum2, calculateNum1);
num2.push(String.valueOf(resultNum));
while(oper1.isEmpty() == false && num1.isEmpty() == false) {
oper2.push((String)oper1.pop());
num2.push((String)num1.pop());
}//end of while
}//end of else-if
else {
num2.push(String.valueOf(calculateNum1));
oper2.push(oper);
}//end of else
}//end of while
while(!oper2.isEmpty()){
oper1.push((String)oper2.pop());
while(!num2.isEmpty()) {
num1.push((String)num2.pop());
while(!num1.isEmpty()) {
System.out.println(num1.pop());
while(!oper1.isEmpty())
System.out.println(oper1.pop());
}//end of main
}//end of class"27.0" is not an integer. (Well, it is numerically, but it's a representation of a double.)
-
Integer.parseInt problems
Hi everyone,
I want to use the Integer.parseInt and Byte.parseByte methods to parse hex strings - the problem is that they don't parse negative 2's complement numbers, they explicitly need a minus sign in front of an otherwise unsigned number to show that it's negative.
Examples:
//System.out.println(Integer.parseInt(Integer.toHexString(-1), 16)); //NumberFormatException
System.out.println(0xffffffff); // but this prints -1
//System.out.println(Byte.parseByte("ff", 16)); //NumberFormatException
System.out.println(Byte.parseByte("-1", 16)); // but this worksIs there some other method that will do what I need?
Regards,
JonathanHere's a dirty solution:public class Test {
private static char[] digits = new char[] {
'0', '1', '2', '3',
'4', '5', '6', '7',
'8', '9', 'a', 'b',
'c', 'd', 'e', 'f'
public static void main (String[] parameters) {
String number = Integer.toHexString (parameters[0].equals ("+") ? Integer.MAX_VALUE : parameters[0].equals ("-") ? Integer.MIN_VALUE : Integer.parseInt (parameters[0]));
if ((number.length () == 8) && (getPosition (number.charAt (0)) >= 8)) {
String newNumber = "";
for (int i = 0; i < number.length (); i ++) {
newNumber += digits[15 - getPosition (number.charAt (i))];
number = "";
boolean carry = true;
for (int i = 7; i >= 0; i --) {
int position = getPosition (newNumber.charAt (i));
if (carry) {
position = (position + 1) % 16;
carry = (position == 0);
number = digits[position] + number;
number = "-" + number;
int numberAsInt;
try {
numberAsInt = Integer.parseInt (number, 16);
} catch (NumberFormatException exception) {
// -8000000
numberAsInt = Integer.MIN_VALUE;
System.out.println (numberAsInt);
private static int getPosition (char digit) {
int position = 0;
while ((position < digits.length) && (digits[position] != digit)) {
position ++;
return position;
}Start with java Test <yourNumber>: + for Integer.MAX_VALUE, - for Integer.MIN_VALUE.
I don't claim it's good or efficient: it's working though. There's lots of things to improve.
Kind regards,
Levi -
Integer.parseInt()
Hi!
I have a problem that for an experienced programmer like you should be easy.
I have in my program:
int num = Integer.parseInt(numbers);
And I get:
Exception in thread "main" java.lang.NumberFormatException: For input string: "195400011111111111111113"
It (195400011111111111111113) looks like not an integer,and I tried:
long num = Integer.parseInt(numbers);
But I get the same error.
What could I do?
Thank you,
NataThat number is too big for an int, so Integer.parseInt doesn't like it. It doesn't matter if you put a long on the left side of the equals sign, Integer.parseInt only handles ints.
Do you know about the Long class? Have you looked at its docs to see if it might have something that can help you? -
Integer.parseInt(in.readLine()) - "null"
I just realized that if I don't enter a value in the following:
System.out.print("Enter the column you'd like to mark in: ");
int col = Integer.parseInt(in.readLine());I get this error:
Enter the column you'd like to mark in:
java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Integer.parseInt(Integer.java:447)
at java.lang.Integer.parseInt(Integer.java:476)
at la5.TicTacToeDriver.main(TicTacToeDriver.java:37)
Exception in thread "main" Is there a way to prevent this error and prompt the user for a proper input (any integer will work).Enclose the parse attempt in a try/catch block.
-
Integer.parseInt() error
I am writing an applet that reads a file containing groups of 5 lines of which the first 4 hold a number. Then these values are used to draw circles. When I compile, I get this error message: "incompatible types
found: int, required: java.lang.Integer, ia = Integer.parseInt(a)".
Suggestions?
Thanks!
import java.awt.*;
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;
import java.awt.geom.*;
public class Section2 extends Applet {
TextField tekst;
public void init() {
resize(400,400);
tekst = new TextField(20);
add(tekst);
public void paint(Graphics g) {
try {
String a, b, c, d, e;
Integer ia, ib, ic, id;
File inputFile = new File(tekst.getText());
FileReader in = new FileReader(inputFile);
BufferedReader BR = new BufferedReader(in);
while (e != null){
a = BR.readLine();
b = BR.readLine();
c = BR.readLine();
d = BR.readLine();
e = BR.readLine();
ia = Integer.parseInt(a);
ib = Integer.parseInt(b);
ic = Integer.parseInt(c);
id = Integer.parseInt(d);
Graphics2D g2d = (Graphics2D)g;
Ellipse2D.Double circle = new Ellipse2D.Double(ia, ib, ic, id);
g2d.setPaint(Color.blue);
g2d.draw(circle);
in.close();
catch (IOException e) {}Ok everything works! I still have some questions:
*** Can anyone tell me why I get this:
--------------------Configuration: Section2 - j2sdk1.4.0_01 <Default>--------------------
Note: C:\Program Files\Xinox Software\JCreator LE\MyProjects\Section textfield\Section2.java uses or overrides a deprecated API.
Note: Recompile with -deprecation for details.
Process completed.
*** Is there a way to go from string to double in one step?
This is the code:
import java.awt.*;
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;
import java.awt.geom.*;
public class Section2 extends Applet {
TextField tekst;
Button knop;
public void init() {
resize(400,400);
tekst = new TextField(20);
add(tekst);
knop = new Button("teken");
add(knop);
public boolean action (Event e, Object o){
if(e.target.equals(knop)){
repaint();
return true;
public void paint(Graphics g) {
try {
String a, b, c, d, e;
Integer ia, ib, ic, id;
File inputFile = new File(tekst.getText());
FileReader in = new FileReader(inputFile);
BufferedReader BR = new BufferedReader(in);
e = "start";
if (tekst.getText() != null){
while (e != null){
a = BR.readLine();
b = BR.readLine();
c = BR.readLine();
d = BR.readLine();
e = BR.readLine();
ia = Integer.valueOf(a);
ib = Integer.valueOf(b);
ic = Integer.valueOf(c);
id = Integer.valueOf(d);
Graphics2D g2d = (Graphics2D)g;
Ellipse2D.Double circle = new Ellipse2D.Double(ia.doubleValue(), ib.doubleValue(), ic.doubleValue(), id.doubleValue());
g2d.setPaint(Color.blue);
g2d.draw(circle);
in.close();
catch (IOException e) {} -
Integer.parseInt() method
Hi to all
I'm trying to write a piece of a lexical analizer in Java and I need the method the does the contrary of Integer.parseInt() method in order to do the following:
once i have as input an integer and with the Integer.parseInt() method i know it's value I want to count it's digits. I'm sure there is a method that do the contrary of Integer.parseInt() method that I can't remeber.
Thanks for your help
MaddyInteger.parseInt() takes in a String and returns an int value, so the contrary would take in an int value and return a String. Is this what you want?
You can use Integer.toString()
Also, when you call Integer.parseInt(String s), you should already have the number as a String (the argument).
Maybe I am not understanding the question right. If not, please explain exactly what you need. -
String equivalent of Integer.parseInt()
Hey..
Integer.parseInt() reads an integer that is being inputted right? what im looking though is some sort of a String equivalent of Integer.parseInt.
ex:
nString = JOptionPane.showInputDialog("Enter number:");
n = Integer.parseInt(nString);
what im looking:
nString = JOptionPane.showInputDialog("Enter text:");
n = ? (nString);
a keyword that reads the text inputted.how do i reset the counter to 0 if the user tries again? because it doesn't reset and it makes a logical error if the user tries again.
while (trya != 0){
if ((trya > 1) || (trya < 0))
break;
else{
z=JOptionPane.showInputDialog("Choose Difficulty:\n[1]BATHROOM SINGER\n[2]MAINSTREAM MUSICIAN\n[3]GRAMMY WINNER");
x=Integer.parseInt(z);
switch(x){
case 1:
JOptionPane.showMessageDialog(null,"DIFFICULTY: BATHROOM SINGER");
String stringInput = JOptionPane.showInputDialog(q1);
if (stringInput.equals(a1)){
JOptionPane.showMessageDialog(null, "Correct!");
i++;
} else {
j++;
JOptionPane.showMessageDialog(null,"Wrong");
String stringInput29 = JOptionPane.showInputDialog(q15);
if (stringInput29.equals(a15)){
JOptionPane.showMessageDialog(null, "Correct!");
i++;
} else {
j++;
JOptionPane.showMessageDialog(null,"Wrong");
JOptionPane.showMessageDialog(null,"Correct answers: "+i+"\nWrong answers: "+j+"\nTHANKS FOR PLAYING");
break;
default:
JOptionPane.showMessageDialog(null,"Press either [1] [2] or [3]", "ERROR",JOptionPane.WARNING_MESSAGE);
break;
stry = JOptionPane.showInputDialog("Do you want to PLAY AGAIN? \n Press [1] for YES \n Press [0] for NO");
trya = Integer.parseInt(stry);
} -
Hi,
There is a new feature added in java 7 on integer, called as underscore '_" and it is working fine
if it is a normal int variable but if it is coming with String jvm throw the error.
if any one of you have java8 installed on your PC can you check this is working on that version.
int a = 1000_000;
String strNum = "1000_000";
// System.out.println("..abc..."+ Integer.parseInt(strNum));
System.out.println("a..."+a);
Thank you,
Shailesh.what is your actual question here?
bye
TPD -
NetBeans 6.5 - Integer.parseInt(String)
Hello,
I'm beginner with NetBeans 6.5.
I created a simple hello-java application and a simple hello java-web JSF application.
I have no error with hello-java application for these 2 lines:
String name = "12345";
int aInt = Interger.parseInt(name) ;
but I get exception handler from java-web JSF application as below.
Hope you help me to solve this, Thanks !
Exception Handler
Description: An unhandled exception occurred during the execution of the web application. Please review the following stack trace for more information regarding the error.
Exception Details: java.lang.NumberFormatException
null
Possible Source of Error:
Class Name: java.lang.Integer
File Name: Integer.java
Method Name: parseInt
Line Number: 415
Source not available. Information regarding the location of the exception can be identified using the exception stack trace below.
......they're different, i was trying to convert the string entered in a TextField to a number, and thought that I already hard coded '12345' in the code to see whether the parseInt works therefore i didn't enter anything in the TextField.
thanks raychen ! -
Class of Integer.parseInt
Hi..,
I really need help. I am trying to make a really simple program. And that I want to make an argument class so that I can reuse it again and again without typing the long word (Integer...)
Here is the problem:
Rational r2 = new Rational(toInt(args[0]));
I think I should make a toInt method, but I don't know how. It is quite confusing. I think this toInt method, we should put it inside the main method. But i don't know yet.
Please Help me!well with the way you wrote it, toInt is a class, not a method. What you are probably envisioning is a class with a constructor which takes a String parameter and returns an int. Unfortunately, constructors don't return values. You can try using the object wrapper class Integer though.
One suggestion, if you hate the typing for getting arg parameters, make a method which takes the whole args array and parses them into a nice int array or some other data structure you dream up to make it easier? -
Is there any way to use Integer.parseInt using jstl
Hi
actually i m getting a string in a varible i need to convert it to int so that i can use it for further calculation.
so plz tell how to do that...
thanksThe exception clearly states the variable isn't a valid number. Print out the value and see what it is.
And no, you can't set the 'JSTL variable' for the simple reason that there are no 'JSTL variables' ( at least none that are public ). You're probably thinking of the EL. And no, you can't do anything there either.
People on the forum help others voluntarily, it's not their job.
Help them help you.
Learn how to ask questions first: http://faq.javaranch.com/java/HowToAskQuestionsOnJavaRanch
(Yes I know it's on JavaRanch but I think it applies everywhere)
---------------------------------------------------------------- -
NumberFormatException when using Integer.decode with hex numbers
hi folks, I have a simple test code to convert a hex string to an Integer. The odd thing is that it works for my hex strings that contains only numbers 0-9 but fails with a NumberFormatException for any hex string with the LEGAL hex characters a-f or A-F. The two examples below show the issue,
import java.io.*;
import java.util.*;
public class decodeTest {
public static void main(String[] args) throws NumberFormatException {
//String t = "0xdeadbeef";
String t = "0x12345678";
Integer tmp = Integer.decode(t);
System.out.println("String t = "+t);
System.out.println("Integer tmp = "+tmp);
}The result is as expected ,
java decodeTestString t = 0x12345678
Integer tmp = 305419896
If I run the code (just replacing the hex string with any number of LEGAL hex characters a-f or A-F I get,
import java.io.*;
import java.util.*;
public class decodeTest {
public static void main(String[] args) throws NumberFormatException {
String t = "0xdeadbeef";
//String t = "0x12345678";
Integer tmp = Integer.decode(t);
System.out.println("String t = "+t);
System.out.println("Integer tmp = "+tmp);
java decodeTestException in thread "main" java.lang.NumberFormatException: For input string: "deadbeef"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:484)
at java.lang.Integer.valueOf(Integer.java:543)
at java.lang.Integer.decode(Integer.java:941)
at decodeTest.main(decodeTest.java:10)
Any ideas would be greatly appreciated!!! (This error repeats for any hexstring with even one character of a-f or A-F)
Mikemikerin wrote:
The java doc on Integer.decode states that the input string is,
public static Integer decode(String nm)
throws NumberFormatException
Decodes a String into an Integer. Accepts decimal, hexadecimal, and octal numbers given by the following grammar:
DecodableString:
Signopt DecimalNumeral
Signopt 0x HexDigits
Signopt 0X HexDigits
Signopt # HexDigits
Signopt 0 OctalDigits
Sign:
I've tried using a string such as "-0xdeadbeef" or "+0xdeadbeef" with the same results. Is not the natural size of an Integer object 32 bits?
So the max is 0xFFFFFFFF. my example of 0xdeadbeef is well within this.
Still stuck!!
MikeIf you read the docs more closely, you'll see that they say:
"The sequence of characters following an (optional) negative sign and/or radix specifier ("0x", "0X", "#", or leading zero) [...] must represent a positive value"
I'm not sure how the run time system is seeing it as a negative number??[http://en.wikipedia.org/wiki/Twos_complement]
Edited by: jverd on Apr 27, 2010 5:37 PM -
Converting a string to an integer - NumberFormatException
Hello,
I have 2 string arrays, one that olds names and one that holds id numbers. They are both stored in a file as Strings. I then read this file into my program and put split the strings up into an array.
I then try to convert the id to integer inside my program like so:
public void make_array(String[] car_info) {
// put in arraylist and change variable type to correct ones
final int ID_INDEX = 0;
final int TYPE = 1;
int cust_id = 22;
String type;
//convert to correct variable types
try {
//convert to string
cust_id = Integer.parseInt(car_info[ID_INDEX]);
} catch (NumberFormatException e) { System.out.println(e); }
type = car_info[TYPE];
}I then get the errors when i try this:
java.lang.NumberFormatException: For input string: "1"
So the id was stored as "1", but i want to convert it to an integer value. Any ideas on why this happends? Also before i try to convert i output the id from the array and it is correct, after the conversion it is 0, obviously it is not working. But i'm not sure what is wrong.
Any ideas?only works when the string is a single number suchas
"1" or "4". If you try to use it with the input
string as a longer one like "123" or "12" itcreates
a NumberFormatExceptionYou must be mistaken. The value must not be what you
think it is. Do some debugging:
String strVal = car_info[ID_INDEX].trim();
System.out.println("This is the number to be
parsed -->" + strVal + "<--");
customer_id = Integer.parseInt(strVal);That is a good idea, but it seems as though the string is fine: I did:
gary@linuxbox# cat cars
this output:
1,5,Renault Clio,Small Car,25,4,false
As you can see the number 25 is a two figure number, and it looks good. I also output the number in the java program like this:
System.out.println("the number is ------>" + twodigitnumber + "<------");This output the number: ------->25<---------- So there doesn't seem to be any wierd spacing or characters there. -
Validating string integer with parseInt
(Dumb question) So far I have:
Object myObj = new JOptionPane.showInputDialog(
"null", "Select", "Select",
JOptionPane.DEFAULT_OPTION, null, null);
String s = myObj.toString();
myInt = Integer.parseInt(s);Trying to idiot proof it so people dont type in 'two'
Looking for a decent solution. I tried
while(myInt.equals("false"))
Object myObj = new JOptionPane.showInputDialog(
"null", "Select", "Select",
JOptionPane.DEFAULT_OPTION, null, null);
String s = myObj.toString();
myInt = Integer.parseInt(s);
But it says int cannot be dereferenced. Hmm.
I've been using the search function too..
Off topic: the guy who shares my office drives me nuts. "What is html ?"
&%$#!!JOptionPane.showInputDialog returns a String => no need to do Object to String conversion.
Tryint input = 0;
String message = "Select";
while (true) {
String s = new JOptionPane.showInputDialog( "null",
message,
"Select",
JOptionPane.DEFAULT_OPTION,
null,
null );
try {
input = Integer.parseInt(s);
break;
catch (NumberFormatException nfe) {
message = "Invalid input: " + s + "\n"
"Select";
}
Maybe you are looking for
-
Bind Variable in SELECT statement and get the value in PL/SQL block
Hi All, I would like pass bind variable in SELECT statement and get the value of the column in Dynamic SQL Please seee below I want to get the below value Expected result: select distinct empno ,pr.dept from emp pr, dept ps where ps.dept like '
-
SAP fixed asset add-on. Not able to import master data using upload pgm.
Hi all, I am trying to import fixed asset master data using an excel file into sap B1 2007a patch level 42. I am able to run the import transaction. It tries to process and then giving me a message ' Import end: Number of successfully imported assets
-
I really need ur help on how to root my Android (itel inote Android)
pls help
-
Use of "Rounding work days" in shipping point?
Hi, Could someone please explain to me how the "rounding work days" in shipping point is used for ATP purpose (within R/3 itself)? Let's assume that the Delivery date is coming up as 18th Nov, 2011 08:00:00 hrs in schedule line, and the rounding work
-
Doubt reg Delta : what abt changed things?
Hey Experts, One basic doubt regarding Delta: plz Help . I want to do delta on say order number based on timestamp.Also these orders can be changed later. So say order 1000 has been fetched yesterday, but its changed today again..(say its value is ch