首页 新闻 会员 周边 捐助

java中Scanner的使用问题,读取float类型输入值

0
悬赏园豆:10 [已解决问题] 解决于 2013-08-01 16:26

最近在学习技术,在使用到java.util.Scanner时遇到了个问题: 问题描述:在使用float fNum = scanner.nextFloat()读取值时,如果输入的值超过8位,读取时会【异常】被截取,导致读取的值和输入的值不符,如果输入时,在值的后面加上"F"或"f",会导致float fNum = scanner.nextFloat()读取报错;

鄙人现在在学java技术,自己也想了下,这个问题是不是可以通过scanner.next()方法先读为String类型的值,然后再在这个String字符串后面手动加个"F"或"f",然后再转换成float类型的值,正在尝试,不知各路大仙是否还有更好的办法呢,我想这个太麻烦了呀!

魏飞的主页 魏飞 | 菜鸟二级 | 园豆:290
提问于:2013-07-31 20:29
< >
分享
最佳答案
1

换成Scanner类的nextDouble()的方法,如果还不够,就直接按字符串读取,然后用Float包装类实例化。

 

float精度是有限的,所以要根据具体需求,选择float还是double。

收获园豆:10
xlst | 菜鸟二级 |园豆:235 | 2013-08-01 01:22

Float包装类也解决不了,刚刚试了下:

1 String str;
2 Scanner sc = new Scanner(System.in);
3         
4 str = sc.next();
5 Float float1 = Float.parseFloat(str);
6 System.out.println(float1);

应该是Scanner这个类的局限性,不纠结了

不过,换了个数据类型Double,也差不多解决了,Double型的接收的数据位数能达到15位差不多;

谢谢这位好心的朋友!

魏飞 | 园豆:290 (菜鸟二级) | 2013-08-01 16:35
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册