Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中为另一个变量的名称添加变量值?_Java_Plugins_Minecraft_Bukkit - Fatal编程技术网

如何在java中为另一个变量的名称添加变量值?

如何在java中为另一个变量的名称添加变量值?,java,plugins,minecraft,bukkit,Java,Plugins,Minecraft,Bukkit,我正在尝试制作一个minecraft插件。我希望它为每个玩家创建变量。我用“for”作为循环。我正在尝试将播放器的名称添加到变量的名称中。有人能帮忙吗 String name = ""; for (Player p : Bukkit.getOnlinePlayers()) { name = p.getName(); int cheatdetection+name = 0;

我正在尝试制作一个minecraft插件。我希望它为每个玩家创建变量。我用“for”作为循环。我正在尝试将播放器的名称添加到变量的名称中。有人能帮忙吗

String name = "";
            for (Player p : Bukkit.getOnlinePlayers()) {
                name = p.getName();
                int cheatdetection+name = 0;
                int looking = (Math.round(p.getLocation().getPitch()) + 270) % 360;
                int currentlooking = looking;
                try {
                    Thread.sleep(10);
                } catch (InterruptedException e) {                      
                    if(looking > currentlooking+20 || looking < currentlooking-20) {
                        cheatdetection+name++;
                    }
                }
                if(cheatdetection >= 10) {
                    Bukkit.getBanList(Type.NAME).addBan(p.getName(), "You have been banned for using Baritone", todate1, "HackMiner Detection");
                    p.kickPlayer("HackMiner Detection");
                }
            }
String name=”“;
for(Player p:Bukkit.getOnlinePlayer()){
name=p.getName();
int+name=0;
整型=(数学圆整(p.getLocation().getPitch())+270)%360;
int currentlooking=正在查找;
试一试{
睡眠(10);
}捕获(中断异常e){
如果(查看>当前查看+20 | |查看<当前查看-20){
作弊检测+name++;
}
}
如果(作弊检测>=10){
Bukkit.getBanList(Type.NAME).addBan(p.getName(),“您因使用男中音而被禁止”,todate1,“黑客检测”);
p、 kickPlayer(“黑客探测”);
}
}

听起来你想要一张地图,上面有每个玩家的钥匙。映射在一个变量(键)和另一个变量(值)之间创建关联。使用put(key,value)方法设置值,并使用“get(key)”检索值

//为每个播放器创建一个整数计数器,初始化为零。
Map playerCheatCounter=new HashMap();
for(Player p:Bukkit.getOnlinePlayer()){
playerCheatCounter.put(p,0);
}
//现在使用它:
for(Player p:Bukkit.getOnlinePlayer()){
int looking=p.getPitch();
线程。睡眠(10)
int currentlyLooking=p.getPitch();
如果(查看>当前查看+20){
//当前播放机的增量计数器
playerCheatCounter.put(p,1+playerCheatCounter.get(p));
//检查当前播放机的存储值
如果(playerHeatCounter.get(p)>10){
//禁赛选手
}
}
}

编辑:修复了一些语法错误

听起来你想要一个地图,每个玩家都有一个键。映射在一个变量(键)和另一个变量(值)之间创建关联。使用put(key,value)方法设置值,并使用“get(key)”检索值

//为每个播放器创建一个整数计数器,初始化为零。
Map playerCheatCounter=new HashMap();
for(Player p:Bukkit.getOnlinePlayer()){
playerCheatCounter.put(p,0);
}
//现在使用它:
for(Player p:Bukkit.getOnlinePlayer()){
int looking=p.getPitch();
线程。睡眠(10)
int currentlyLooking=p.getPitch();
如果(查看>当前查看+20){
//当前播放机的增量计数器
playerCheatCounter.put(p,1+playerCheatCounter.get(p));
//检查当前播放机的存储值
如果(playerHeatCounter.get(p)>10){
//禁赛选手
}
}
}

编辑:修复了一些语法错误

根据我对你问题的理解

您希望实现一个for循环,其中您希望将变量名指定为
cheatdetection+name

简短的回答是否定的,这在Java中是不允许的! 此外,正如在注释中指出的,这就是所谓的动态变量名

您也可以创建一个
HashMap
,其中包含玩家姓名以及您试图存储的任何对象!
这只是一个建议,因为您的问题并不清楚为什么需要这样的变量命名

根据我对你问题的理解

您希望实现一个for循环,其中您希望将变量名指定为
cheatdetection+name

简短的回答是否定的,这在Java中是不允许的! 此外,正如在注释中指出的,这就是所谓的动态变量名

您也可以创建一个
HashMap
,其中包含玩家姓名以及您试图存储的任何对象!
这只是一个建议,因为您的问题并不清楚为什么需要这样的变量命名

我不知道我是否正确理解了你的问题,因为它非常模糊,而且你没有提供任何关于你期望结果的信息。第四行
int+name=0您正在尝试向变量名添加字符串对象。这在任何编程语言中都是不可能的,因为编译器需要从一开始就知道变量名。要解决问题,可以创建类似以下内容的类:

public class PlayerObject {
    private String name;
    private TYPE whateverYouWantToStoreExceptTheName;
    public PlayerObject(String name) {
        this.name = name;
    }

    public String getName() {
        return this.name;
    }
}
如果然后创建一个
List=new ArrayList()
,您可以通过添加以下函数始终获得您搜索的播放器:

public PlayerObject getPlayerByName(String name) {
    for(PlayerObject player : list) {
        if(player.getName().equals(name);
            return player;
    return null;
}
一定要 答:初始化(Player p:Bukkit.getOnlinePlayers())
循环的
之前的列表。
B:为PlayerObject创建自己的文件
C:用谷歌搜索你如何在列表中添加、删除和获取项目

D:以某种方式处理getPlayerByName函数中的空值,否则您将陷入NullPointerException。

我不知道我是否正确理解了您的问题,因为它非常模糊,并且您没有提供任何关于预期结果的信息。第四行
int+name=0您正在尝试向变量名添加字符串对象。这在任何编程语言中都是不可能的,因为编译器需要从一开始就知道变量名。要解决问题,可以创建类似以下内容的类:

public class PlayerObject {
    private String name;
    private TYPE whateverYouWantToStoreExceptTheName;
    public PlayerObject(String name) {
        this.name = name;
    }

    public String getName() {
        return this.name;
    }
}
如果然后创建一个
List=new ArrayList()
,您可以通过添加以下函数始终获得您搜索的播放器:

public PlayerObject getPlayerByName(String name) {
    for(PlayerObject player : list) {
        if(player.getName().equals(name);
            return player;
    return null;
}
一定要 答:初始化(Player p:Bukkit.getOnlinePlayers())
循环的
之前的列表。
B:为PlayerObject创建自己的文件
C:用谷歌搜索你如何在列表中添加、删除和获取项目

D:以某种方式处理getPlayerByName函数中的null,否则您将陷入NullPointerException。

请共享代码和预期结果。您甚至不提供模糊的D