黑马程序员技术交流社区

标题: 如何把String转成int型数组 [打印本页]

作者: 平凡成就非凡    时间: 2014-2-25 13:17
标题: 如何把String转成int型数组
BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));
String st=bufr.readLine();
如果键盘输入的是1234,如何把st转换成int型数组。
请各位老师,师兄师姐帮帮忙,谢谢大家。

作者: wdtdcm    时间: 2014-2-25 13:41
先判断是否为纯数字,和是否在int的范围大小内部,再进行转唤吧.

个人觉得,应该要避免出现这种情况,要不就在输入时进行判断,要不再写个重载函数
作者: 张继鲁    时间: 2014-2-25 13:50
String str = "1,2,3";

String[] strarr = str.split(",");
Integer[] strs = new Integer[str.length];
for(int x = 0;x<str.length x++){
strs[i] = Integer.parseInt(strarr[i]);

大概的思路就是这样的
}
作者: 平凡成就非凡    时间: 2014-2-25 14:05
谢谢,我想问的是没有逗号分割的。就是1234是连续输入的。
作者: 薛旻    时间: 2014-2-25 15:12
我的解决办法比较烦了
  1. import java.io.*;
  2. class StringToInt {
  3.         public static void main(String[] args) throws IOException {
  4.                 BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  5.                 String str = br.readLine();
  6.                 char[] charArray = str.toCharArray();
  7.                 int[] intArray = new int[charArray.length];
  8.                 Character charTemp = new Character('a');
  9.                 for (int i=0; i<charArray.length; i++) {
  10.                          intArray[i] =  charTemp.digit(charArray[i],10);
  11.                 }
  12.                 //打印Int数组
  13.                 for (int i=0; i<intArray.length; i++) {
  14.                         System.out.println(intArray[i]);
  15.                 }

  16.                 br.close();
  17.         }
  18. }
复制代码

作者: 平凡成就非凡    时间: 2014-2-25 15:23
薛旻 发表于 2014-2-25 15:12
我的解决办法比较烦了

谢谢,
                 
作者: syw02014    时间: 2014-2-25 15:40
自己写的函数,没有用系统函数:
  1. public static int parseInt(String Array)
  2.         {
  3.         if(Array==null||Array.equals(""))
  4.             throw new IllegalArgumentException("参数不能为null或空串!!!");
  5.         int result = 0;
  6.         for(int i=0,len=Array.length();i<len;i++){
  7.             char c = Array.charAt(i);
  8.             if (c>='0'&&c<='9')
  9.                 result=result*10+(int)(c-'0');
  10.             else
  11.                 throw new IllegalArgumentException("Array中只能包含数字!!!");
  12.         }
  13.         return result;
  14.     }
复制代码





作者: 平凡成就非凡    时间: 2014-2-25 15:48
syw02014 发表于 2014-2-25 15:40
自己写的函数,没有用系统函数:

result=result*10+(int)(c-'0');为什么还要result*10呢?
作者: xiaochen33520    时间: 2014-2-25 16:32
思路:接收一个录入的字符串,将他通过toCharArray()方法转换成字符数组,然后通过判断,对其进行筛选,是数字就装入数组,不是就剔除掉。
作者: 平凡成就非凡    时间: 2014-2-25 16:37
可不可以把字符串“1234”一个一个截出啦,如“1”,“2”。再把它转换成int类型呢
作者: syw02014    时间: 2014-2-25 16:40
平凡成就非凡 发表于 2014-2-25 15:48
result=result*10+(int)(c-'0');为什么还要result*10呢?

字符串123转换为整数时:
0*10+1=1
1*10+2=12
12*10+3=123
能明白吗?
作者: 平凡成就非凡    时间: 2014-2-25 17:05
syw02014 发表于 2014-2-25 16:40
字符串123转换为整数时:
0*10+1=1
1*10+2=12

谢谢,明白啦




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