Skip to main content
gamedev.net
🔒 Locked 🤖 Godot

[java] NumberFormatException

Started by Tanax 8 replies 3k views
Original Post
Tanax
Tanax
Woho, I'm here again xD :P Anyway, I know what the exception MEANS, I just don't have a clue why it's being thrown.
Quote:
Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "300 " at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48) at java.lang.Integer.parseInt(Integer.java:456) at java.lang.Integer.parseInt(Integer.java:497) at Account.getLastTransactionData(Account.java:229) at Logic.getLastTransactionData(Logic.java:100) at Logic.writeAccountNote(Logic.java:83) at GUI.actionPerformed(GUI.java:259) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236) at java.awt.Component.processMouseEvent(Component.java:6041) at javax.swing.JComponent.processMouseEvent(JComponent.java:3265) at java.awt.Component.processEvent(Component.java:5806) at java.awt.Container.processEvent(Container.java:2058) at java.awt.Component.dispatchEventImpl(Component.java:4413) at java.awt.Container.dispatchEventImpl(Container.java:2116) at java.awt.Component.dispatchEvent(Component.java:4243) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916) at java.awt.Container.dispatchEventImpl(Container.java:2102) at java.awt.Window.dispatchEventImpl(Window.java:2440) at java.awt.Component.dispatchEvent(Component.java:4243) at java.awt.EventQueue.dispatchEvent(EventQueue.java:599) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160) at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
Account.getLastTransactionData(Account.java:229):

public String getLastTransactionData()
    {
    	
    	String expr = "\t";
    	String lastTransaction = this.latestTransactions[0];
    	String[] last = lastTransaction.split(expr);
    	String trans = "";
    	int amount = (int) Integer.parseInt(last[2]);
    	
    	if(this.latestTransactions[1] != null)
    	{
    		
    		String beforeLastTransaction = this.latestTransactions[1];
    		String[] before = beforeLastTransaction.split(expr);
    		int beforeAmount = Integer.parseInt(before[2]);
    		
    		amount -= beforeAmount;
    		
    	}
    	
    	trans = "Transaction date: " + last[0] + "\nTransaction type: " + last[1] + "\nAmount: " + amount;
    	
    	return trans;
    	
    }

Anyone that see's the problem here?
Tanax
Tanax
I tried this:
int amount = Integer.parseInt(String.trim(last[2]));

and several other ways to trim the last[2] value, but all of them gives me this:
Quote:

--------------------Configuration: --------------------
C:\Documents and Settings\Marcus\Skrivbord\Skola\OOP Java\Uppgifter\Upg 4\Account.java:225: trim() in java.lang.String cannot be applied to (java.lang.String)
String lastTransaction = String.trim(this.latestTransactions[0]);
^
C:\Documents and Settings\Marcus\Skrivbord\Skola\OOP Java\Uppgifter\Upg 4\Account.java:235: trim() in java.lang.String cannot be applied to (java.lang.String)
before[2] = String.trim(before[2]);
^
2 errors

Process completed.
Tanax
Tanax
Oooh, right. Thanks.
I just saw him using String.trim() so I thought that we were using the String object like we used Integer.parseInt().

One small problem now though with this.
I'm saving to a textfile, and how would I get a new line?
I get the data like:

trans = "Transaction date: " + last[0] + "\nTransaction type: " + last[1] + "\nAmount: " + amount;

but \n only gets a weird sign instead of a new line, how would I go around that?
Tanax
Tanax
FileManager:
public void writeAccountNote(String data) throws FileNotFoundException	{				this.file_write = new File(this.file_name);		this.write_stream = new FileOutputStream(this.file_write);		this.write_printWriter = new PrintWriter(this.write_stream);				this.write_printWriter.print(data);		this.write_printWriter.close();			}


Logic:
public void writeAccountNote() throws FileNotFoundException	{				String filename = this.filemanager.save(2);		String transaction = this.getLastTransactionData();				if(filename != "")		{						this.filemanager.file(filename).writeAccountNote(transaction);					}			}
xissburg
xissburg
try \r\n instead of \n only.
.
Tanax
Tanax
Yep, that worked perfectly!
Thanks alot! :)
CaptainJester
CaptainJester
You shouldn't hard code in line feeds. Instead you can get the platform standard linefeed with System.getProperty("line.separator");
"None of us learn in a vacuum; we all stand on the shoulders of giants such as Wirth and Knuth and thousands of others. Lend your shoulders to building the future!" - Michael Abrash[JavaGaming.org][The Java Tutorial][Slick][LWJGL][

Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.