根据 try catch 以不同方式分配 TextComponent 对象
Assigning a TextComponent object differently based on try catch
我正在尝试获取字符串 kd
并将其分配给 TextComponent
对象,或者如果字符串可以解析为 Double 值,则将其分配给 TextComponent
使用 DecimalFormat
对象。
我检查已知字符串并以这种方式进行,如下所示:
final TextComponent kd;
if (PlayerMeta.getStats(target).kd.contains("!") || PlayerMeta.getStats(target).kd.contains("null")) {
kd = new TextComponent("K/D: " + PlayerMeta.getStats(target).kd);
} else {
kd = new TextComponent("K/D: " + new DecimalFormat("#.###").format(Double.parseDouble(PlayerMeta.getStats(target).kd)));
}
但我想立即捕获所有不可双重解析的字符串。
我不能这样做,因为当无法解析字符串时,kd 会被分配两次:
final TextComponent kd;
try {
kd = new TextComponent("K/D: " + new DecimalFormat("#.###").format(Double.parseDouble(PlayerMeta.getStats(target).kd)));
} catch (NumberFormatException e) {
kd = new TextComponent("K/D: " + PlayerMeta.getStats(target).kd);
}
在这里实现我的目标的最紧凑的方法是什么?
你知道我想把它写在这里帮助我了解问题的所在。
使用 if 块时,TextComponent 需要事先为 final 和 null,但 不是 with try / catch。
我刚刚删除了 final
,现在它可以编译了,尽管我还没有再次测试该插件。
我正在尝试获取字符串 kd
并将其分配给 TextComponent
对象,或者如果字符串可以解析为 Double 值,则将其分配给 TextComponent
使用 DecimalFormat
对象。
我检查已知字符串并以这种方式进行,如下所示:
final TextComponent kd;
if (PlayerMeta.getStats(target).kd.contains("!") || PlayerMeta.getStats(target).kd.contains("null")) {
kd = new TextComponent("K/D: " + PlayerMeta.getStats(target).kd);
} else {
kd = new TextComponent("K/D: " + new DecimalFormat("#.###").format(Double.parseDouble(PlayerMeta.getStats(target).kd)));
}
但我想立即捕获所有不可双重解析的字符串。
我不能这样做,因为当无法解析字符串时,kd 会被分配两次:
final TextComponent kd;
try {
kd = new TextComponent("K/D: " + new DecimalFormat("#.###").format(Double.parseDouble(PlayerMeta.getStats(target).kd)));
} catch (NumberFormatException e) {
kd = new TextComponent("K/D: " + PlayerMeta.getStats(target).kd);
}
在这里实现我的目标的最紧凑的方法是什么?
你知道我想把它写在这里帮助我了解问题的所在。
使用 if 块时,TextComponent 需要事先为 final 和 null,但 不是 with try / catch。
我刚刚删除了 final
,现在它可以编译了,尽管我还没有再次测试该插件。