Java 根据try-catch不同地分配TextComponent对象

Java 根据try-catch不同地分配TextComponent对象,java,try-catch,variable-assignment,bukkit,Java,Try Catch,Variable Assignment,Bukkit,我试图获取一个字符串kd并将其分配给TextComponent对象,或者如果可以将该字符串解析为双精度值,则使用DecimalFormat对象将其分配给TextComponent 我检查已知字符串并按如下方式执行: final TextComponent kd; if (PlayerMeta.getStats(target).kd.contains("!") || PlayerMeta.getStats(target).kd.contains("null"

我试图获取一个字符串
kd
并将其分配给
TextComponent
对象,或者如果可以将该字符串解析为双精度值,则使用
DecimalFormat
对象将其分配给
TextComponent

我检查已知字符串并按如下方式执行:

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,但不能使用try/catch

我刚刚删除了
final
,现在它可以编译了,尽管我还没有再次测试插件