Java:检查double的输入,但它接受一个int并将其变为double

时间:2016-10-15 19:01:15

标签: java

所以我试图运行这个程序来检查每个输入,看看输入是否匹配正确的类型,int,double和boolean。然而,双重价值给我带来了麻烦。 hasnextDouble接受一个int,变量将其变为double。我可以帮助解决这个问题,并解释为什么,我不想要一个答案,我想理解。

<rules>
    <rule name="some_name">
       <match url="^([_0-9a-z-]+)/([0-9]+)/$" />
       <action type="Rewrite" url="index.php/{R:1}?idspec={R:2}" />
    </rule>
</rules>

2 个答案:

答案 0 :(得分:0)

双精度空间是整数的超集,即int可以拟合为double,或者可以解释为double。如果你在数字中特别需要小数点,你应该检查它。

答案 1 :(得分:0)

解释原因

  

解释为什么

因为int值可以表示为double值,所以在java中整数值可以隐式转换为double,但反之则不然:

double d = 1.0; // valid
double dd = 1; // valid
int i = 1; // valid
int ii = 1.0; // error

如何解决

  

我可以帮助解决这个问题

添加检查它是否为整数格式:

while(!(input.hasNextDouble() && !input.hasNextInt()))