字符串值未显示两个变量值

我想将 String 值设置为fileName + ".yaml" + comment != null ? comment : "" + date.toString()fileName 和 comment 类型为 String 的地方,但表达式不显示 filenema.yaml 和日期,但仅显示注释,如果该值不为空。我的表达有什么问题?

回答

我强烈怀疑这个问题是优先的。我希望它被视为:

String value = (fileName + ".yaml" + comment) != null ? comment : "" + date.toString();

第一个表达式永远不会为空,因此它将始终采用条件运算符的第二个操作数而不是第三个。即便如此,我认为代码在优先级方面还不清楚......我肯定会使其更加明确。

我怀疑您实际上希望它解析为:

String value = fileName + ".yaml" + (comment != null ? comment : "") + date.toString();

......所以明确地说。请注意,您不需要toString()调用 - 这是隐式的,因为您使用的是字符串连接。所以你可以只拥有:

String value = fileName + ".yaml" + (comment != null ? comment : "") + date;

(我怀疑有更简单的方法可以用字符串格式来表达这一点,但它至少应该做你想做的。)

另一种选择是将条件运算符移动到单独的语句中:

String commentOrEmpty = comment == null ? "" : comment;
String value = fileName + ".yaml" + commentOrEmpty + date;


以上是字符串值未显示两个变量值的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>