黑马程序员技术交流社区

标题: 字符串转换成整形的错误 [打印本页]

作者: 唐僧踏歌    时间: 2014-4-16 16:47
标题: 字符串转换成整形的错误
本帖最后由 唐僧踏歌 于 2014-4-23 12:25 编辑
  1. String st="1213.21";
  2. int in=Integer.parseInt(st);
  3. System.out.println("in="+in);
复制代码

这里为什么会出错误,打印不出来?
作者: 榨菜    时间: 2014-4-16 17:00
parseInt 转换的是整数, 小数点是不能被转换的。  试下Double里面的parseDouble
作者: 月光海    时间: 2014-4-16 17:02
  1. public static void main(String[] args) {
  2.                 // TODO Auto-generated method stub
  3.                 String st="1213.23";
  4.                 double d =Double.parseDouble(st);
  5.                 System.out.println("in="+d);
  6.         }
复制代码
把int换成double,Integer换成Double类就可以,或者是先转成double,再用强转转成int也行
作者: 唐僧踏歌    时间: 2014-4-16 17:31
榨菜 发表于 2014-4-16 17:00
parseInt 转换的是整数, 小数点是不能被转换的。  试下Double里面的parseDouble

谢谢 ,换成Double是可以,我还以为只要是字符串,就可以转换成想要的整形,没想到还得根据字符串选择整形。。。。
作者: ⒈心只霸占沵    时间: 2014-4-16 17:36
  1. String st="1213.21";

  2. int in=Integer.parseInt(st);//Integer只能转换"12133"这样的字符串   "1213.21" Double.parseDouble("1213.21")才可以转

  3. System.out.println("in="+in);
复制代码

作者: skyfly    时间: 2014-4-16 17:45
你这是对各种数据类型的不熟悉,如果熟悉的话就不会出错了,int只能是整形的要有小数要不float 要不double类型。 以下数据类型转换你可以看一下。
1)将字符串转化为整型;
int i = Integer.parseIn(String str);
int i = Integer.valueOf().intValue();
注:Integer.parseIn 和 Integer.valueOf 不同,前者生成的是整型,而后者是一个对象,所以要通过intValue()来获得对象的值;
字串转成 Double, Float, Long 的方法大同小异.
2) 整型转化为字符串:
String str = String.valueOf(int i);
String str = Integer.toString(int i);
String str = “” + i ;
注: Double, Float, Long 的方法大同小异.
3) Long转化为date:
SimpleDateFormat sf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
//tieml,timef是long,前面转化过来的
Date date = new Date(timel - timef);
  String time = sf.parse(date);

4)、float型转换为double型:
float f1=100.00f;
Float F1=new Float(f1);
//F1.doubleValue()为Float类的返回double值型的方法
double d1=F1.doubleValue();
作者: 雨落千木的时节    时间: 2014-4-16 20:44
JDK API对Inegger类的parseInt方法是这样解释的:
public static int parseInt(String s)
                    throws NumberFormatException将字符串参数作为有符号的十进制整数进行解析。除了第一个字符可以是用来表示负值的 ASCII 减号 '-' ('\u002D') 外,字符串中的字符都必须是十进制数字。返回得到的整数值,就好像将该参数和基数 10 作为参数赋予 parseInt(java.lang.String, int) 方法一样。

参数:
s - 包含要解析的 int 表示形式的 String。
返回:
用十进制参数表示的整数值。
抛出:
NumberFormatException - 如果字符串不包含可解析的整数。


你这里的错误很明显在传递参数时应该这样写:int in=Integer.parseInt("st");
参数st要加引号,表示传递的是字符串




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2