好的,所以早些时候我发布了this thread,询问如何从for循环中创建多个值。 过了一会儿我遇到了一个问题,我不知道如何解决也不知道为什么会发生这种情况。 这是我的代码:
for(int x = 0; x < con.length; x++)
{
maxS[x] = main.getConfig().getString("areas." + con[x] + ".max").split(", ").toString();
minS[x] = main.getConfig().getString("areas." + con[x] + ".min").split(", ").toString();
event.getPlayer().sendMessage("1");
for(int y = 0; y < maxS.length; y++)
{
maxV[y] = new Vector(Integer.parseInt(maxS[y]), Integer.parseInt(maxS[y+1]), Integer.parseInt(maxS[y+2]));
minV[y] = new Vector(Integer.parseInt(minS[y]), Integer.parseInt(minS[y+1]), Integer.parseInt(minS[y+2]));
event.getPlayer().sendMessage("2");
}
}
错误消息:
2013-07-29 20:32:12 [SEVERE] Could not pass event PlayerMoveEvent to FactionPlay v1.6.2 org.bukkit.event.EventException at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:427) at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:477) at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:462) at net.minecraft.server.v1_6_R2.PlayerConnection.a(PlayerConnection.java:227) at net.minecraft.server.v1_6_R2.Packet10Flying.handle(SourceFile:136) at net.minecraft.server.v1_6_R2.NetworkManager.b(NetworkManager.java:296) at net.minecraft.server.v1_6_R2.PlayerConnection.e(PlayerConnection.java:116) at net.minecraft.server.v1_6_R2.ServerConnection.b(SourceFile:37) at net.minecraft.server.v1_6_R2.DedicatedServerConnection.b(SourceFile:30) at net.minecraft.server.v1_6_R2.MinecraftServer.t(MinecraftServer.java:590) at net.minecraft.server.v1_6_R2.DedicatedServer.t(DedicatedServer.java:226) at net.minecraft.server.v1_6_R2.MinecraftServer.s(MinecraftServer.java:486) at net.minecraft.server.v1_6_R2.MinecraftServer.run(MinecraftServer.java:419) at net.minecraft.server.v1_6_R2.ThreadServerApplication.run(SourceFile:582) Caused by: java.lang.NumberFormatException: For input string: " [Ljava.lang.String;@af7327" at java.lang.NumberFormatException.forInputString(Unknown Source) at java.lang.Integer.parseInt(Unknown Source) at java.lang.Integer.parseInt(Unknown Source) at me.BlueJelly.FactionPlay_SP.PlayerListener.onPlayerMove(PlayerListener.java:191) at sun.reflect.GeneratedMethodAccessor89.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:425) ... 14 more
感谢您的帮助。
答案 0 :(得分:2)
根据您的错误消息判断,您对Integer.parseInt
的调用实际上并没有获得可以解析为int的字符串。
相反,他们获得了字符串" [Ljava.lang.String;@af7327"
。
你应该重新评估你是如何获得这些字符串的
以下行看起来不对。
maxS[x] = main.getConfig().getString("areas." + con[x] + ".max").split(", ").toString();
这可能只是我的c#体验,但我通常希望.split()
调用返回string
而不是单string
的数组。
在不查看其余代码的情况下很难分辨,但我希望看到一行看起来更像以下
maxS = main.getConfig().getString("areas." + con[x] + ".max").split(", ");