gpt4 book ai didi

java - 当尝试实现我的 Tilemap 时,Java 向我抛出错误 ' For input string: ""'

转载 作者:太空宇宙 更新时间:2023-11-04 06:19:09 24 4
gpt4 key购买 nike

现在我面临一个问题,我似乎无法在互联网上找到任何帮助。我正在尝试将我用 Tiled 制作的图 block map 实现到我的 Slick2D java 项目中,但我无法解决此错误代码:

ERROR:For input string: ""
java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at org.newdawn.slick.tiled.TiledMap$ObjectGroup.<init>(TiledMap.java:1008)
at org.newdawn.slick.tiled.TiledMap.load(TiledMap.java:688)
at org.newdawn.slick.tiled.TiledMap.<init>(TiledMap.java:106)
at org.newdawn.slick.tiled.TiledMap.<init>(TiledMap.java:90)
at simpleslickgame.SpielTest.init(SpielTest.java:36)
at org.newdawn.slick.AppGameContainer.setup(AppGameContainer.java:393)
at org.newdawn.slick.AppGameContainer.start(AppGameContainer.java:317)
at simpleslickgame.SpielTest.main(SpielTest.java:25)

Fri Dec 26 22:47:27 CET 2014 ERROR:Failed to parse tilemap
org.newdawn.slick.SlickException: Failed to parse tilemap
at org.newdawn.slick.tiled.TiledMap.load(TiledMap.java:695)
at org.newdawn.slick.tiled.TiledMap.<init>(TiledMap.java:106)
at org.newdawn.slick.tiled.TiledMap.<init>(TiledMap.java:90)
at simpleslickgame.SpielTest.init(SpielTest.java:36)
at org.newdawn.slick.AppGameContainer.setup(AppGameContainer.java:393)
at org.newdawn.slick.AppGameContainer.start(AppGameContainer.java:317)
at simpleslickgame.SpielTest.main(SpielTest.java:25)
Caused by: java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at org.newdawn.slick.tiled.TiledMap$ObjectGroup.<init>(TiledMap.java:1008)
at org.newdawn.slick.tiled.TiledMap.load(TiledMap.java:688)
... 6 more

我就是找不到办法解决这个问题。我不处理任何可能最终出现在输入字符串中的输入。我就是不明白我做错了什么。

这是我的代码:

package simpleslickgame;

import org.newdawn.slick.AppGameContainer;
import org.newdawn.slick.BasicGame;
import org.newdawn.slick.GameContainer;
import org.newdawn.slick.Graphics;
import org.newdawn.slick.SlickException;
import org.newdawn.slick.tiled.TiledMap;

public class SpielTest extends BasicGame
{
public TiledMap map;

public SpielTest()
{
super("Test");
}

public static void main(String[] arguments)
{
try
{
AppGameContainer app = new AppGameContainer(new SpielTest());
app.setDisplayMode(1000, 800, false);
app.start();
}
catch (SlickException e)
{
e.printStackTrace();
}
}

@Override
public void init(GameContainer container) throws SlickException
{
map=new TiledMap("res/Slickesdingbruder.tmx");
}

@Override
public void update(GameContainer container, int delta) throws SlickException
{
}

public void render(GameContainer container, Graphics g) throws SlickException
{
map.render(0, 0);
}
}

向我指出问题所在的地方甚至可能会有所帮助,但我就是找不到代码和错误之间的联系。

最佳答案

未损坏的文件也有同样的问题,请检查 Slick2D 源。此错误是由于尝试加载包含“宽度”和“高度”属性未定义或无法在其“objectgroup”XML 标记中解析为整数的对象图层(.tmx 文件是 XML)而导致的。 Tiled 的 Java 库的 Slick2D 版本需要它们(据我所知,它不会将它们用于任何用途 - 我得到的版本在其渲染代码中完全忽略 map 对象)并且 Tiled map 编辑器通常不会(如果有的话)定义它们 - 如果您确实需要对象层的边界框,最好在加载 map 后计算。

希望这个问题最终能够得到解决,但最简单的解决方法是在文本编辑器中打开 .tmx 文件,然后在每个对象组标记中插入 width="1"height="1"。这可以通过首先将 .tmx 文件加载到字符串中、执行 find() 或正则表达式搜索、替换并使用“new ByteArrayInputStream(tmxString.getBytes(Charset.forName("UTF-8"))”调用 TiledMap 构造函数来实现自动化。

关于java - 当尝试实现我的 Tilemap 时,Java 向我抛出错误 ' For input string: ""',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27662369/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com