黑马程序员技术交流社区

标题: 如何快速将字符串转换为int型数据的方法! [打印本页]

作者: hyz123456    时间: 2013-10-6 13:55
标题: 如何快速将字符串转换为int型数据的方法!
本帖最后由 hyz123456 于 2013-10-6 17:48 编辑

    例如字符串"123456789",有没有方法快速的将其转换为int型的123456789???
如果是单个字符'1'的话还可以将其-48就变成了int型,但是一个字符串的话怎么弄比较快?
又或者如果字符串中带一两个符号呢?例如"123-456-789"如何快速提取出三个对应数字???



作者: lizhangzhi    时间: 2013-10-6 14:16
  1. String str="123456789";
  2.                 int i=Integer.parseInt(str);//调用Integer类的parseInt()方法,将字符串转换成int类型;
  3.                 System.out.println(i);
  4.                 String str1="123-456-789";
  5.                 System.out.println(str1);
  6.                 StringBuilder sb=new StringBuilder();//接收新的字符串
  7.                 for(int j=0;j<str1.length();j++){//遍历字符串,去掉字符'-'
  8.                         if(str1.charAt(j)!='-'){
  9.                                 sb.append(str1.charAt(j));
  10.                         }
  11.                 }
  12.                 System.out.println(sb.toString());//打印新的字符串
  13. 每个基本数据类型所对应的类都有相应的字符串转换成基本数据类型的方法,不过字符串 “true”,“false”不能转换成boolean类型;
复制代码

作者: 卜弦    时间: 2013-10-6 14:17
一个字符串的话可以将其存储在一个数组arr中,用循环语句对其中的每个元素进行“-48”的操作之后存储在另一个数组arr2中,最后打印输出arr2就行了。
  1. class Practice
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 char[] arr={'1','2','3','4','5','6','7','8','9'};
  6.                 int[] arr2=new int[arr.length];
  7.                 for (int x=0;x<arr.length;x++ )
  8.                 {
  9.                         arr2[x]=arr[x]-48;
  10.                 }
  11.                 for (int x=0;x<arr.length;x++)
  12.                 {
  13.                         System.out.print(arr2[x]);
  14.                 }
  15.         }
  16. }
复制代码

作者: hyz123456    时间: 2013-10-6 14:48
lizhangzhi 发表于 2013-10-6 14:16

嗯,你的方法很好! 谢谢!

作者: 路边小色狼    时间: 2013-10-6 14:48
String str ="123456789";   int x=Integer.valueOf(str);   这样就行
"123-456-789"这个要就直接用切割吧,。String[]  strs="123-456-789".split("-");
作者: hyz123456    时间: 2013-10-6 14:49
卜弦 发表于 2013-10-6 14:17
一个字符串的话可以将其存储在一个数组arr中,用循环语句对其中的每个元素进行“-48”的操作之后存储在另一 ...

嗯  我指的一个String类型的字符串,不过还是谢谢你了!

作者: 卜弦    时间: 2013-10-6 14:54
第二种情况 请看下面程序:

  1. //如果字符串中带一两个符号呢?例如"123-456-789"如何快速提取出三个对应数字???
  2. class Practice
  3. {
  4.         public static void main(String[] args)
  5.         {      
  6.                 char[] arr={'1','2','3','-','4','5','6','-','7','8','9'};
  7.                 int[] arr2=new int[arr.length];
  8.                 int y=0;
  9.                 for (int x=0;x<arr.length;x++ )
  10.        {
  11.        if (arr[x]>=48&&arr[x]<=57)//如果数组中的字符满足在48到57的范围,就把这个字符减去48,并存储到arr2中。
  12.                                                    //如果不满足条件则x自增1,y不变。保证缺省的字符不会被补0.
  13.                 arr2[y++]=arr[x]-48;               
  14.                                 }
  15.                 for (int x=0;x<arr.length;x++)
  16.                 {
  17.                         System.out.print(arr2[x]+" ");
  18.                 }
  19.         }
  20. }
复制代码

作者: 卜弦    时间: 2013-10-6 14:57
hyz123456 发表于 2013-10-6 14:49
嗯  我指的一个String类型的字符串,不过还是谢谢你了!

我是菜鸟。。。。。。能力有限
作者: hyz123456    时间: 2013-10-6 14:59
卜弦 发表于 2013-10-6 14:57
我是菜鸟。。。。。。能力有限

嗯,咱都是... 加油吧!

作者: 麦子    时间: 2013-10-6 15:14
直接回答关键点:
  方式一:i=Integer.parseInt(s);
   直接使用的静态方法,不会产生多余的对象,但会抛出异常
  方式二:i=Integer.valueOf(s).intValue();
   Integer.valueOf(s) 相当于 new Integer(Integer.parseInt(s)),也会抛异常,但会多产生一个对象
  自己看着办
作者: 乔兵    时间: 2013-10-6 16:13
问题解决后,请修改帖子分类为:提问结束




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