我正在一个有任务的项目中,所有任务数据都保存在播放器文件中。我将任务数据保存在播放器文件中的方法不是很多方法,而是一个简单的整数字符串。

我在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/

10-10 13:55
查看更多