当前位置: 首页 > 知识库问答 >
问题:

异常线程"main"java.lang.NumberFormatExcture:基数482大于字符。MAX_RADIX

郭浩穰
2023-03-14

最近我对我的游戏有一个问题,这个:

@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)

有什么想法吗?

(很抱歉,如果答案很简单,我找不到解决方案。)

共有1个答案

薄哲
2023-03-14

似乎您正试图将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

由于括号混淆,两个参数被传递到Integer。value of,第二个被解释为基数。异常来自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);

顺便说一下,您的构造函数可能采用ints,在这种情况下,您可以使用parseIntparseIntvalue eOf之间的唯一区别是parseInt返回一个intvalue eOf返回一个整数

return new CraftingTableTile(
    Integer.parseInt((String)args.get(0)),
    Integer.parseInt((String)args.get(1)),
    this.healthrep);
 类似资料: