java三元运算符在字符串连接期间自动将int转换为double

0ve6wy6x  于 2021-07-12  发布在  Java
关注(0)|答案(1)|浏览(482)

这个问题在这里已经有答案了

在java中使用if vs.三值运算符时的“错误”返回类型(2个答案)
11个月前关门了。
我正在尝试使用数组中的一些数值创建一组文件路径,并读取这些文件。文件夹的名称中有精确的数字值,但值为1.0时除外。因此,如果值为1.2,则文件夹如下
数据/text/1.2/
值为1.0时,文件夹为
数据/text/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);

输出如下:
数据/text/1.0/
数据/text/1/
第一种情况下的值不也是吗?
数据/text/1/
因为我使用的是整型文字,所以需要这个值。
在三元运算符的情况下,int值被转换为double,这是某种bug吗?还是我做错什么了?

xurqigkl

xurqigkl1#

您需要为三元操作选择一个确定的返回类型。它必须是第二个和第三个操作数可以转换的对象,并且适合三元结果的使用方式。
作为一个简单的策略,看看您计划如何使用结果,并选择用于该用途的类型。将一个或两个操作数强制为该类型。
在这个问题中,结果将与一个字符串连接起来。使用 "1" 而不是 1 强制三元结果类型为字符串。 key 可以转换为字符串,因此只需更改一个操作数。

相关问题