A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 唐僧踏歌 中级黑马   /  2014-4-16 16:47  /  1143 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 唐僧踏歌 于 2014-4-23 12:25 编辑
  1. String st="1213.21";
  2. int in=Integer.parseInt(st);
  3. System.out.println("in="+in);
复制代码

这里为什么会出错误,打印不出来?

6 个回复

倒序浏览
parseInt 转换的是整数, 小数点是不能被转换的。  试下Double里面的parseDouble
回复 使用道具 举报
  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也行

评分

参与人数 1技术分 +1 收起 理由
菜小徐 + 1

查看全部评分

回复 使用道具 举报
榨菜 发表于 2014-4-16 17:00
parseInt 转换的是整数, 小数点是不能被转换的。  试下Double里面的parseDouble

谢谢 ,换成Double是可以,我还以为只要是字符串,就可以转换成想要的整形,没想到还得根据字符串选择整形。。。。
回复 使用道具 举报
  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);
复制代码
回复 使用道具 举报
你这是对各种数据类型的不熟悉,如果熟悉的话就不会出错了,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();
回复 使用道具 举报
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要加引号,表示传递的是字符串
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马