如何将变量值添加到java中的另一个变量的名称?
How to add variable value to the name of another variable in java?
我正在尝试制作一个我的世界插件。我希望它为每个玩家创建变量。我在循环中使用“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");
}
}
听起来你想要一张地图,每个玩家都有一把钥匙。 Map 在一个变量(键)和另一个变量(值)之间创建关联。使用 put(key, value) 方法设置值,并使用 'get(key)'
检索它们
// Create an Integer counter for every player, initialized to zero.
Map<Player, Integer> playerCheatCounter = new HashMap<>();
for (Player p : Bukkit.getOnlinePlayers()) {
playerCheatCounter.put(p, 0);
}
// Now to use it:
for (Player p : Bukkit.getOnlinePlayers()) {
int looking = p.getPitch();
Thread.sleep(10)
int currentlyLooking = p.getPitch();
if (looking > currentlyLooking + 20) {
// Increment counter for the current player
playerCheatCounter.put(p, 1 + playerCheatCounter.get(p));
// Check the stored value for the current player
if (playerCheatCounter.get(p) > 10) {
// Ban player
}
}
}
编辑:修复了一些语法错误
根据我对你问题的理解;
您想实现一个 for 循环,您希望将变量名称指定为 cheatdetection+name
简短的回答是否定的,这在 Java 中是不允许的!
此外,正如评论中所指出的,这就是所谓的动态变量名称。
您也可以创建一个 HashMap
,其中包含玩家名称以及您要存储的任何对象!
这只是一个建议,因为您的问题还不是很清楚为什么需要这样的变量命名!
我不知道我是否正确理解了你的问题,因为它非常模糊,而且你没有提供任何关于你期望结果的信息。在第四行 int cheatdetection+name = 0;
中,您正试图将 String 对象添加到变量名称。这在任何编程语言中都是不可能的,因为编译器需要从一开始就知道变量名。要解决您的问题,您可以创建一个类似于此的 class:
public class PlayerObject {
private String name;
private TYPE whateverYouWantToStoreExceptTheName;
public PlayerObject(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
}
如果您随后创建一个 List<PlayerObject> list= new ArrayList<>();
,您可能总能通过添加以下函数来获得您搜索的播放器:
public PlayerObject getPlayerByName(String name) {
for(PlayerObject player : list) {
if(player.getName().equals(name);
return player;
return null;
}
一定要
A:在for (Player p : Bukkit.getOnlinePlayers())
循环之前初始化List。
B: 为 PlayerObject 创建一个自己的文件
C: google 你如何添加、删除和获取项目 from/to 列表
D: 以某种方式处理 getPlayerByName 函数中的 null,否则您将陷入 NullPointerException。
我正在尝试制作一个我的世界插件。我希望它为每个玩家创建变量。我在循环中使用“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");
}
}
听起来你想要一张地图,每个玩家都有一把钥匙。 Map 在一个变量(键)和另一个变量(值)之间创建关联。使用 put(key, value) 方法设置值,并使用 'get(key)'
检索它们// Create an Integer counter for every player, initialized to zero.
Map<Player, Integer> playerCheatCounter = new HashMap<>();
for (Player p : Bukkit.getOnlinePlayers()) {
playerCheatCounter.put(p, 0);
}
// Now to use it:
for (Player p : Bukkit.getOnlinePlayers()) {
int looking = p.getPitch();
Thread.sleep(10)
int currentlyLooking = p.getPitch();
if (looking > currentlyLooking + 20) {
// Increment counter for the current player
playerCheatCounter.put(p, 1 + playerCheatCounter.get(p));
// Check the stored value for the current player
if (playerCheatCounter.get(p) > 10) {
// Ban player
}
}
}
编辑:修复了一些语法错误
根据我对你问题的理解;
您想实现一个 for 循环,您希望将变量名称指定为 cheatdetection+name
简短的回答是否定的,这在 Java 中是不允许的! 此外,正如评论中所指出的,这就是所谓的动态变量名称。
您也可以创建一个 HashMap
,其中包含玩家名称以及您要存储的任何对象!
这只是一个建议,因为您的问题还不是很清楚为什么需要这样的变量命名!
我不知道我是否正确理解了你的问题,因为它非常模糊,而且你没有提供任何关于你期望结果的信息。在第四行 int cheatdetection+name = 0;
中,您正试图将 String 对象添加到变量名称。这在任何编程语言中都是不可能的,因为编译器需要从一开始就知道变量名。要解决您的问题,您可以创建一个类似于此的 class:
public class PlayerObject {
private String name;
private TYPE whateverYouWantToStoreExceptTheName;
public PlayerObject(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
}
如果您随后创建一个 List<PlayerObject> list= new ArrayList<>();
,您可能总能通过添加以下函数来获得您搜索的播放器:
public PlayerObject getPlayerByName(String name) {
for(PlayerObject player : list) {
if(player.getName().equals(name);
return player;
return null;
}
一定要
A:在for (Player p : Bukkit.getOnlinePlayers())
循环之前初始化List。
B: 为 PlayerObject 创建一个自己的文件
C: google 你如何添加、删除和获取项目 from/to 列表
D: 以某种方式处理 getPlayerByName 函数中的 null,否则您将陷入 NullPointerException。