2014-04-07 25 views
0

最近我一直在和我的比赛的问题,这一点:异常线程 “main” java.lang.NumberFormatException:沙参482大于Character.MAX_RADIX

@Override 
public Tile getPlace(List args) 
{ 
    return new CraftingTableTile(Integer.valueOf((String)args.get(0), 
    Integer.valueOf((String)args.get(1)).intValue()).intValue(), this.healthrep); 
} 

还有:

s.map[selectedx][selectedy] = s.mp.inven.i[s.mp.invsel].getPlace(args); 

给出了一个错误:

Exception in thread "main" java.lang.NumberFormatException: radix 482 greater than Character.MAX_RADIX 
    at java.lang.Integer.parseInt(Unknown Source) 
    at java.lang.Integer.valueOf(Unknown Source) 
    at net.spideynn.miner2d.CraftingTableItem.getPlace(CraftingTableItem.java:21) 
    at net.spideynn.miner2d.MainGame.mousePressed(MainGame.java:851) 
    at org.newdawn.slick.Input.poll(Input.java:1217) 
    at org.newdawn.slick.GameContainer.updateAndRender(GameContainer.java:641) 
    at org.newdawn.slick.AppGameContainer.gameLoop(AppGameContainer.java:411) 
    at org.newdawn.slick.AppGameContainer.start(AppGameContainer.java:321) 
    at net.spideynn.miner2d.MainGame.main(MainGame.java:2074) 

什么想法?

(很抱歉,如果答案很简单,我无法找到一个解决方案。)

+0

有多少个参数要传递到你的'CraftingTableTile'构造函数中:2还是3? – rgettman

+0

显然'args.get(1)'是'“482”'大于'Character.MAX_RADIX'。 Java无法解析base 482.你需要什么帮助? – Radiodef

回答

1

看来,你正试图通过3个值到您的CraftingTableTile构造,而是因为在你的括号中的一个错误,你逝去仅2个参数:

//    v This parenthesis... 
Integer.valueOf((String)args.get(0), 
// is balanced by this parenthesis    v 
    Integer.valueOf((String)args.get(1)).intValue()).intValue() 

this.healthrep 

因为括号的mixup的,两个参数被传递到Integer.valueOf,第二个被解释为基数。来自482的例外大于最大可能的基数。

你可能意味着通过这些3个参数:

Integer.valueOf((String)args.get(0)) 

Integer.valueOf((String)args.get(1)).intValue() 

this.healthrep 

像这样:

return new CraftingTableTile(
    Integer.valueOf((String)args.get(0)), 
    Integer.valueOf((String)args.get(1)).intValue(), 
    this.healthrep); 

顺便说一下,您的构造函数可能正在使用int s,在这种情况下,您可以使用parseIntparseIntvalueOf之间的唯一区别是parseInt返回intvalueOf返回Integer

return new CraftingTableTile(
    Integer.parseInt((String)args.get(0)), 
    Integer.parseInt((String)args.get(1)), 
    this.healthrep); 
+0

感谢您的帮助! – Spideynn

相关问题