“线程中的异常”;“主要”;java.lang.NumberFormatException:基数482大于Character.MAX\u基数
最近我的游戏出现了问题,这是:“线程中的异常”;“主要”;java.lang.NumberFormatException:基数482大于Character.MAX\u基数,java,Java,最近我的游戏出现了问题,这是: @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] =
@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)
有什么想法吗
(很抱歉,如果答案很简单,我找不到解决方案。)您似乎试图将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()
Integer.valueOf((String)args.get(0))
及
由于括号混淆,两个参数被传递给,第二个参数被解释为基数。异常来自482
大于最大可能基数
您可能想传递以下3个参数:
// v This parenthesis...
Integer.valueOf((String)args.get(0),
// is balanced by this parenthesis v
Integer.valueOf((String)args.get(1)).intValue()).intValue()
Integer.valueOf((String)args.get(0))
及
及
像这样:
return new CraftingTableTile(
Integer.valueOf((String)args.get(0)),
Integer.valueOf((String)args.get(1)).intValue(),
this.healthrep);
顺便说一句,您的构造函数可能使用int
s,在这种情况下,您可以使用parseInt
。parseInt
和valueOf
之间唯一的区别是parseInt
返回int
,而valueOf
返回整数
return new CraftingTableTile(
Integer.parseInt((String)args.get(0)),
Integer.parseInt((String)args.get(1)),
this.healthrep);
您试图向CraftingTableTile
构造函数传递多少个参数:2或3?显然args.get(1)
是“482”
,它大于字符.MAX\u基数
。Java无法解析base 482。你到底需要什么帮助?谢谢你的回复!
return new CraftingTableTile(
Integer.parseInt((String)args.get(0)),
Integer.parseInt((String)args.get(1)),
this.healthrep);