根据 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,现在它可以编译了,尽管我还没有再次测试该插件。