【发布时间】:2020-05-29 11:10:36
【问题描述】:
我正在尝试使用数组中的一些数值创建一组文件路径并读取这些文件。除了值为 1.0 时,文件夹的名称中包含精确的数值。所以如果值为 1.2 文件夹就像
数据/文本/1.2/
当值为 1.0 时文件夹为
数据/文本/1/
所以我尝试使用三元运算符并得到了意想不到的结果。这是代码-
double key = 1.0;
String path = "data/text/" + (key == 1.0 ? 1 : key) + "/";
System.out.println(path);
String path2 = "data/text/" + 1 + "/";
System.out.println(path2);
输出如下:
数据/文本/1.0/
数据/文本/1/
第一种情况的值不应该也是?
数据/文本/1/
我期望这个值,因为我使用的是整数文字。
这是某种错误,在三元运算符的情况下,int 值被强制转换为双精度值?还是我搞错了?
【问题讨论】:
-
Java 中的每个表达式都有一个编译时类型,包括三元表达式。 “
int或double”不是可能的类型,因此为了让这个三元表达式具有类型,必须将一个或两个操作数转换为不同的类型。 -
如果你把它改成
(key == 1.0 ? "1" : key)你告诉编译器结果应该是一个字符串。
标签: java string int double conditional-operator