声明字符串后,java在条件语句中设置int值
我有一个字符串(breakmsg
),我希望每个if
语句都使用相同的字符串(breakmsg
),其中的整数value
需要根据if
语句中声明的内容进行更改。在声明了breakmsg
字符串之后,如何更改value
变量的值?以前的尝试在代码中被注释
这是我目前的代码:
private int value;
public void setValue(int v){
value = v;
}
@EventHandler
public void onBlockBreak(BlockBreakEvent e) {
Block b = e.getBlock();
Player p = e.getPlayer();
//int value = 0;
String breakmsg = ChatColor.GREEN + "You gained " + ChatColor.GOLD + value + ChatColor.GREEN + " points for collecting " + ChatColor.AQUA + b.getType() + ChatColor.GREEN + ".";
@SuppressWarnings("deprecation")
int itemID = p.getItemInHand().getTypeId();
if (b.getType() == Material.DIAMOND_ORE) {
if (itemID == 257 || itemID == 278) {
//value = 5;
setValue(5);
int points = getConfig().getInt("players." + p.getUniqueId() + ".points");
getConfig().set("players." + p.getUniqueId() + ".points", points + value);
saveConfig();
startScoreboard();
e.getPlayer().sendMessage(breakmsg);
}
}
if (b.getType() == Material.GOLD_ORE) {
if (itemID == 257 || itemID == 285 || itemID == 278) {
//value = 3;
setValue(3);
int points = getConfig().getInt("players." + p.getUniqueId() + ".points");
getConfig().set("players." + p.getUniqueId() + ".points", points + value);
saveConfig();
startScoreboard();
e.getPlayer().sendMessage(breakmsg);
}
}
}
# 1 楼答案
你可以把这个逻辑封装在一个私有函数中
然后在
if
语句中,而不是设置值,您可以执行以下操作:请注意,您可能也应该简单地在if语句之后设置消息,但仍然希望将消息生成逻辑提取到私有函数中
我真的建议你读Clean Code。你的函数很长,它做了很多事情,它有很多神奇的数字和相当多的代码重复
编辑:因为你在函数中声明了
int value
,所以我没有意识到它是一个实例变量