我正在一个有任务的项目中,所有任务数据都保存在播放器文件中。我将任务数据保存在播放器文件中的方法不是很多方法,而是一个简单的整数字符串。
我在User.java中所做的事情:
private final int[][] questData = {{0}, {0}, {0}, {0}, {0}};
上面的代码保存了所有5个任务的进度。
在我的QuestHandling.java中,我编写了代码:
public static void checkQuestStates(User user) {
if (user.questProgress[1][1] == 0) {
System.out.println("Quest One Status = 0");
}
}
这是一个测试,看是否可以获取字符串(User.java)中第一个int的值。
这就引出了我的问题,如何获取字符串中每个int的值并对其进行处理,以便可以执行以下操作:
if (user.questProgress[1] == 0) {
user.getPackets().sendConfig(29, 0); //(makes that quest (Quest #1) icon red a.k.a not started)
}else if (user.questProgress[1] >= 1 && user.questProgress[1] != 10) {
user.getPackets().sendConfig(29, 1); //(makes that quest (Quest #1) icon yellow a.k.a started
} else if (user.questProgress[1] == 10) {
user.getPackets().sendConfig(29, 2); //(makes that quest (Quest #1) icon green a.k.a finished
}
我更改的内容和错误:
我改变了什么:
在Player.java(User.java)中
public int[] questProgress = {0, 0, 0, 0, 0};
而且我也尝试过:
public int questProgress[] = {0, 0, 0, 0, 0};
在questHandler.java中,我输入了:
public static void checkQuestStates(Player player) {
if (player.questProgress[1] == 1) {
System.out.println("Quest One Status = 0");
}
}
和我测试它的命令是
case "statustest":
StartQuestManager.checkQuestStates(player);
return true;
当我键入命令(仅此命令)时,出现以下错误:
ERROR! THREAD NAME: New I/O worker #1
java.lang.NullPointerException
at com.feather.game.player.quests.StartQuestManager.checkQuestStates(StartQuestManager.java:115)
at com.feather.game.player.content.Commands.processAdminCommand(Commands.java:1239)
at com.feather.game.player.content.Commands.processCommand(Commands.java:79)
at com.feather.net.decoders.WorldPacketsDecoder.processPackets(WorldPacketsDecoder.java:1662)
at com.feather.net.decoders.WorldPacketsDecoder.decode(WorldPacketsDecoder.java:279)
at com.feather.net.ServerChannelHandler.messageReceived(ServerChannelHandler.java:98)
at org.jboss.netty.channel.SimpleChannelHandler.handleUpstream(SimpleChannelHandler.java:95)
at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:563)
at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:558)
at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:268)
at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:255)
at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:91)
at org.jboss.netty.channel.socket.nio.AbstractNioWorker.processSelectedKeys(AbstractNioWorker.java:373)
at org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:247)
at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:35)
at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:102)
at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
最佳答案
编辑:好的,您已删除2D数组。让我们再做一次
private int[] questData = {0,0,0,0,0,0};
让此方法更有用,更通用。让我们返回一个字符串。 (似乎您现在不知道如何使用return,因为您对所有方法都使用了void)
public String checkQuestStates(User user, int questLine) {
String sQuestData = "Quest 1 Status: "+Integer.toString(user.questProgress[questLine]);
System.out.println(sQuestData);
return sQuestData
}
关于java - Strings [] []获取整数值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21442038/