我正在尝试调试代码的一部分,但是存在“重复的局部变量”错误。我该如何解决这个问题呢?我不确定错误是什么,所以我在这里问。
public JumpPlusPlayer(JumpPlus plugin, Player p) {
loadPermissions(p, plugin);
fillConfig(plugin);
}
protected void loadPermissions(Player p, JumpPlus plugin) {
HashSet<PermissionAttachmentInfo> perms = new HashSet<PermissionAttachmentInfo>();
PermissionAttachment attach;
if (plugin.usingPEX) {
PermissionUser user = PermissionsEx.getUser(p);
String world = p.getWorld().getName();
attach = new PermissionAttachment(plugin, p);
for (String perm : user.getPermissions(world)) {
String expression = user.getMatchingExpression(perm, world);
perms.add(new PermissionAttachmentInfo(p, perm, attach, user.explainExpression(expression)));
}
} else {
perms = (HashSet<PermissionAttachmentInfo>) p.getEffectivePermissions();
}
for (PermissionAttachmentInfo attach : perms) {
String perm = attach.getPermission();
if (perm.contains("jumpplus.config.")) {
String[] aux = perm.split("jumpplus.config.");
aux = aux[1].split("-");
if (aux[0].equals("hspeed"))
this.hSpeed = Double.valueOf(Double.parseDouble(aux[1]));
else if (aux[0].equals("vspeed"))
this.vSpeed = Double.valueOf(Double.parseDouble(aux[1]));
else if (aux[0].equals("maxjumps"))
this.maxJumps = Integer.valueOf(Integer.parseInt(aux[1]));
else if (aux[0].equals("maxfreejumps"))
this.maxFreeJumps = Integer.valueOf(Integer.parseInt(aux[1]));
else if (aux[0].equals("jumpcost"))
this.jumpCost = Integer.valueOf(Integer.parseInt(aux[1]));
else if (aux[0].equals("fallmodifier"))
this.fallModifier = Integer.valueOf(Integer.parseInt(aux[1]));
else if (aux[0].equals("particleeffect"))
this.particleEffect = Boolean.valueOf(Boolean.parseBoolean(aux[1]));
else if (aux[0].equals("defaultstate"))
this.enable = Boolean.valueOf(Boolean.parseBoolean(aux[1]));
}
}
}
答案 0 :(得分:2)
我如何解决此问题?
嗯,不要在同一范围内两次声明局部变量?
在增强的for循环中使用不同的局部变量名,或者将第一个的声明移到if
语句中:
PermissionAttachment attach = new PermissionAttachment(plugin, p);
(你没有在if
语句之外使用,所以为什么要在开始时声明呢?)
答案 1 :(得分:0)
问题在于您的loadPermissions
方法,特别是这两行:
PermissionAttachment attach;
for (PermissionAttachmentInfo attach : perms) {
第一行声明一个名为attach
的局部变量(仅存在于该方法调用中的变量)。第二行也声明了一个名为attach
的局部变量,但由于它已经存在,因此无法执行此操作。你需要为其中一个选择一个不同的名称。